一、es7新特性
1.1 cinludes
相当于indexof,,但是indexof返回是数数字,下标
1.2 指数操作符
二、 es8新特性
2.1. async和await函数:
(生成器函数和promise对象可以实现异步编程)
async和await两种语法结合可以让异步代码像同步代码一样
2.1.1 async函数
在函数前面加async即可。
返回的结果是一个promise对象。promise对象的状态由对象来决定。如果返回的是失败的promise或者是错误,则返回的promise对象的状态也是失败的。
2.1.2. await 表达式
await 得到的是promise对象成功的值。
2.1.3 案例实践
(1)异步读取三个文件
(2)异步发送ajax请求
用async来发送请求,用await来接收结果。
2.2 es8对象扩展
Object.keys(), Object.values(), Object.entries()
设置对象的描述对象
三、es9
3.1 rest参数和扩展运算符。
es6 中只针对数组,而es9中可以针对数组,也可以针对对象。
(1)reset,只针对,形参
(2)扩展运算符
对象的合并
3.2 正则扩展
(1)命名捕获分组
使用下标来匹配
使用分组来匹配:可以更好的维护。输出result.groups.url即可得到结果
(2)反向断言
断言:根据目标的前面和后面对目标做唯一性的识别
正向断言:根据后面内容对目标做唯一性的识别
反向断言:根据前面内容对目标做唯一性的识别
(3)dotAll模式
. 元字符:除换行以外的任意单个字符
dotAll模式,其实就是加了一个模式修正符s,此时的点(.)可以匹配任意字符。(否则还要单独匹配换行符很麻烦)
四:es10
4.1 对象扩展方法 Object.fromEntries
Object.fromEntries(数组/Map)数组中一个长度为2的数组,使用该数组,可以将数字转化为对象。或者将Map转化为对象。
es8中,有Object.entries(对象)将对象转换为二维数组。
以上两个互为逆运算。
4.2 trimStart和trimEnd:清除左侧和右侧空白。
4.3 数组的两个方法:flat和flatMap
(1)flat:将多维数组转化为低位数组
const arr = [1,2,3,4,5,[6,7,[8,9]]];
console.log(arr.flat()); //[1,2,3,4,5,6,7,[8,9]]
console.log(arr.flat(2)); //[1,2,3,4,5,6,7,8,9] 传递的参数表示深度
(2)flatMap
4.4 Symbol.prototype.description
获取symbol的描述字符串
五、es11
5.1 私有属性:带有#,外部不能直接调用
5.2 Promise.allSettled和Promise.all
接收一个promise数组,返回的结果是一个promise对象,并且该对象的状态是成功的,成功的值是promise数组中每一个promise对象的状态和值。
根据需求,选择合适的函数
5.3 String.prototype.matchAll
正则匹配。可以得到全部的匹配结果。
5.4 可选链操作符
5.5 import动态加载。
按需加载。
用的时候再导入。
5.6 BigInt:新的数据类型:大整数
定义的时候,在普通整数后面加入n。主要用于大数值运算。
但是大整数不能与普通数值一起运算,两个数必须都是大整数才可以一起运算。
5.7 绝对全局对象globalThis
该对象始终指向全局对象。直接使用即可。