ES7-11
(1)ES7
1.数组检测方法:includes函数判断数组中是否含有某个元素
2.幂运算:**
(2)ES8
1.async和await
aysnc:async函数的返回值是promise对象
返回的promise对象的结果由async的返回值决定
1.字符串或其他,则为成功resolved
2.抛出异常,则为失败rejected
3.返回的就是promise对象,则由promise对象的状态决定
await:必须写在async函数中
await右侧的表达式为promis对象
await返回值是promise成功的值
await的promise失败了会抛出异常,需要用try..catch接收
2.对象方法扩展
values:获取对象所有的值
keys:获取对象所有的键
entries:将对象的每一对键值转化为数组,方便map对象的创建
getOwnPropertyDescriptors:获取对象的描述对象。即是否可修改、可删除等
(3)ES9
1.扩展运算符和rest参数
详情见SE6
2.正则扩展
命名匹配:对匹配命名方便修改 const reg = /<a href="( ?<ur1>.*)">( ?<text>.*)<\/a>/
正向/反向断言:正向(?<= [规定字符]) / (?<=么)ld+/ 反向(?=[规定的字符]) /d+(?=啦)/
dotAll模式:正则中点可以匹配除换行以外的任意放个字符
(4)ES10
1.fromEntries:将二维数组或map转化为对象形式,和ES8中的entries效果相反
2.字符串扩展:
trimStart:清除字符串左侧空白
trimEnd:清除字符串右侧空白
3.数组扩展
flat:将高维数组转化为低维数组
flatMap:将map转化为一个一维数组
4.symbol扩展
description:获取创建symbol对象时传入的参数
(5)ES11
1.class扩展:
私有属性 :写法:#age
2.promise扩展
allSettled:返回的结果总是成功的,成功的值是每一个promise对象的执行结果的值
all:和上面一个类似,不过必须所有的promise执行结果全成功才会返回成功,否则返回失败
3.正则扩展
matchAll:获取所有匹配的结果相当于re.findall
4.可选链操作符(?.)
当对象的层级比较深时,需要对每一层都要验证来确保他存在。
config?.db?.host
5.动态引入impor
import( " ./hello.js ' ).then( module => { .... });
6.bigInt:大整形,适用于更大数字运算
写法:let n = 521n;
7.globalthis
始终指向全局对象