ECMAScript6-11新特性及核心知识点介绍

ECMAScript6
新特性核心知识点
let变量声明1.变量不能重复声明;2. 引入块级作用域;
3. 不再存在变量提升;4.不影响作用域链
const定义常量1.一定要赋初始值;2.一般常量使用大写或驼峰命名法;
3. 常量的值不能修改;4.也是块级作用域;
5. 对于数组和对象元素的修改,因为指向的堆内存地址值不变,所以不算对常量的修改,不报错
解构赋值1. 针对数组和对象;2. 数组的解构是按索引/顺序进行赋值;
3. 对象的解构是寻找同名属性进行赋值,如果没有同名属性则被赋值为undefined
模板字符串 ``1.内容中可以直接出现换行符;2.内容中可以进行变量拼接(利用$())
箭头函数 =>1. 箭头函数不能作为构造函数实例化,不能使用arguments变量;
2. 当形参只有一个时可以省略小括号;当代码体只有一条语句时可以省略大括号且必须省略return;
3. 箭头函数适合与this无关的回调,如定时器,数组方法回调等;不适合与this有关的回调,如事件回调,对象的方法(因this为静态,始终指向函数声明时所在作用域this的值)
rest参数 …args用于获取参数的实参,代替arguments
扩展运算符 […]1. 将[数组]转换为逗号分隔的[参数序列];
2.数组的合并,数组的克隆,伪数组转换为真正的数组
新数据类型Symbol1. JS的第七种数据类型,类似于字符串的数据类型;
2.let s=Symbol(‘sgg’); 表示独一无二的值,用来解决命名冲突的问题,不能与其他数据进行运算/比较,定义的对象属性不能使用for…in循环遍历但是可以使用Reflect.ownkey键名;
3. 有11+个属性/方法,用于扩展对象功能
新数据类型Set1. JS的第八种数据类型,类似于数组的数据类型,但成员的值都是唯一的;
2.集合实现了iterator接口,所以可以使用扩展运算符和[for…of…]遍历;
3.集合的属性和方法有size/add/delete/has;
4. 可以用于数组的自动去重,交集,并集等场景,如let result=[…new Set(arr)]
新数据类型Map1. JS的第九种数据类型,类似于对象的数据类型,也是键值对的集合,但“键”的范围不限于字符串,各种类型的值(包括对象)都可以;
2.集合实现了iterator接口,所以可以使用扩展运算符和[for…of…]遍历,遍历的结果为数组,每个数组内包含键与值;
3.let m=new Map();Map的属性和方法有size/add/get/has/clear
设置函数默认初始值允许给函数参数赋值初始值,一般位置靠后(潜规则);可与解构赋值结合
对象的简化允许大括号里,直接写入变量和函数,作为对象的属性和方法
迭代器迭代器是一种接口,为各种不同的数据结构提供统一的访问机制;任何数据结构只要部署iterator接口,就可以完成遍历操作;
ES6创造了一种新的遍历命令for…of循环,iterator接口主要供for…of消费;
原生具备iterator接口的数据:Array Arguments Set Map String
生成器1. 生成器其实就是一个特殊的函数,用于解决异步编程;
2. yield用于分隔,next方法可以传入实参,实参是作为第n-1个yield语句返回的结果
Promise1. Promise是ES6引入的异步编程的新解决防范,语法上是一个构造函数。用来封装异步操作并可以获取其成功或失败的结果;2. Promisr.prototype.then方法
class类引入了class(类)的概念,作为对象的模块;同时可以定义类;构造函数的继承和原型链的继承方式也发生了更改
数值扩展Number.EPSILON,Number.isNaN,Number.isFinite等;
对象方法的扩展1. Object.is判断两个值是否完全相等(NaN也可以判断);
2. Object.assign对象的合并;
3. Object.setPrototypeOf设置原型对象;Object.getPrototypeOf获取原型对象
模块块ES6模块化规范;export与import(参考JS模块化规范)
babel对ES6模块化代码的转换**
引入npm包import $ from “jquery”; **
ECMAScript7
新特性核心知识点
Array.prototype.includesincludes方法用来检测数组中是否包含某个元素,返回布尔类型值;ES5的indexof返回的是数字[索引],且不存在时返回-1
指数操作符ES7引入指数运算符[**],用来实现幂运算,功能与Math.pow结果相同
ECMAScript8
新特性核心知识点
asynch和await可以异步代码像同步代码一样;
async函数: 返回值是promise对象,promise对象的结果由async函数执行的返回值决定;
await函数:必须写在async函数中,右侧的表达式一般为promise对象,返回的是promise成功的值,如果promise失败了会抛出异常(通过try…catch捕获)
对象方法的扩展Object.keys()获取对象所有的键;
Object.values()获取对象所有的值;
Object.entries() 对象转换为数组,数组内容是键值;
Object.getOwnPropertyDescriptors()返回对象属性的描述对象
ECMAScript9
新特性核心知识点
rest参数和扩展运算符ES6中已经引入,但只针对于数组,在ES9中为对象提供了像数组一样的rest参数和扩展运算符
正则扩展命名捕获分组;反向断言;dotAll模式;
ECMAScript10
新特性核心知识点
对象方法的扩展Object.fromEntries 将二维数组转换为对象;是ES8中Object.entries()的逆运算
字符串方法的扩展trimStart清除字符串左侧空白;trimEnd清除字符串右侧空白
数组方法的扩展flat/flatMao:将多维度数组转换为低纬数组;
Symbol.prototype.description获取symbol的描述
ECMAScript11
新特性核心知识点
私有属性前面加#表示私有属性,实例化后无法被读取到,只能通过私有调用
Promise.allSettled方法用于批量异步任务的场景
字符串方法的扩展string.prototype.matchAll方法
可选链操作符?.:不需要层级判断;前面的有结果就返回前面的,没有结果返回后面的,找不到返回undefined
动态importimport结果返回的值是一个prpmise对象,成功的值就是promise暴露出的方法
绝对全局对象globalThis主要用于某些环境下,直接忽略其他,对全局对象做操作
新数据类型 BigIntJS的第十种数据类型;
表示大整型,主要用于大数值运算
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值