一、es6相关
- 有let、const、变量的结构赋值、模板字符串``
- 对象的简化写法:
- 箭头函数以及声明特点,特点有以下
- this是静态的,this始终指向函数声明时所在作用域下this的值,call和apply也不能改变this的指向
- 箭头函数不能作为构造实例化对象
- 不能使用arguments变量
4. rest参数、扩展运算符(...)、Symbol(第7种数据类型,表独一无二的值、不能用for in循环遍历,但是可以使用Reflect.ownKeys来获取对象的所有健名,可以用symbol.for来创建、不能与其他数据进行运算、另外还有很多内置属性)、所有数据类型(USONB)
5.迭代器generator是一种接口,里面有symbol.iterator
6.* 生成器(生成器是一种特殊的函数)用iterator.next()才能继续往下走,可以结合yield使用
7.promise、set以及一系列方法等(has、delete、size等)、map、class(以及getter和setter)、各种数值扩展
8.Number.EPSTION是js表示的最小精度,EPSTION属性的值接近于2.220446049....,二进制和八进制,Number.isFinite检测一个数值是否为有限数,Number.isNaN检测一个数值是否是NaN,Number.parseInt、Number.parseFloat字符串转为整数,Number.isInteger判断一个数是否为整数,Math.trunc将数字的小数部分抹掉,Math.sign判断一个数到底为正数、负数、零。
9.对象的扩展:Object.is判断两个值是否完全相等,Object.assgin对象的合并,Object.setPrototypeOf和Object.getPrototypeOf,
10.模块化规范产品;commonjs=》nodejs,browserify,AMD=》requirejs,CMD=》seaJs
11.es6模块暴露数据语法汇总
12.es6引入模块数据语法汇总
二、ES7新特性
- Array.prototype.includes,用来检测数组中是否包含某个元素,返回布尔类型值
- 指数操作符**,用来实现幂运算,功能和Math.pow相同
三、ES8新特性
- async和await
四、ES9新特性
- 扩展运算符...和rest参数,在es6中已经引入了,不过es6只针对数组
- 正则扩展-命名捕获分组
- 正则扩展-反向断言
const str = 'KSJBLKGJB1314你知道么555啦啦啦' // 提取url与标签文本 // const reg = /\d+(?=啦)/; const reg = /(?<=么)\d+/; // 反向断言:根据前面的内容来判断; console.log(reg.exec(str)); - 正则扩展-dotAll模式 . 元字符 除换行符之外的任意字符
五、ES10新特性
- Object.fromEntries,创建一个map对象不过是一个二维数组形式
- trimStart和trimEnd
- flat和flatMap数组方法,数组铺平方法
- Symbol.prototype.description
六、ES11新特性
- 私有属性
- Promise.allSettled,返回每个promise的执行结果,跟promose.all方法有区别,all方法都成功了才成功,
- String.prototype.matchAll正则批量匹配的方法,可以用for of循环来遍历批量匹配结果;
- 可选链操作符?.
5.动态import
6.双问号??
7.BigInt类型
8.绝对全局对象globalThis;