2020年发布了新版本的EcmaScript,出现了许多新的特性,本文将逐一讨论这些新特性的用法
BigInt
之前JavaScript中Int类型整数的最大代表值为 9007199254740991, ES11加入了BigInt类型后可以超过这个值。
![](https://img.haomeiwen.com/i13851193/b1cf0ec8f5eb99a2.png)
动态导入
现在我们可以通过变量来动态的import模块, 接收模块的变量可以全局包含这些模块的命名空间。
let _module;
if ("option1") _module = await import('./module1.js');
else _module = await import('./module2.js');
模块导出
新的模块导出语法, 类似于之前的导入语法
// Added in ES11
export * as MyComponent from './Example.js'
// Existing
import * as MyComponent from './Example.js'
可选链(Optional Chaining)
现在JavaScript原生支持可选链调用的语法。
const user = {
"name": "Aryclenio Barros",
"age": 22,
"alive": true,
"address": {
"street": "Hyrule street",
"number": 24,
}
}
// Without optional chaining
const number = user.address && user.address.number
// With optional chaining
const number = user.address?.number
null或操作符
新增加了 ??
运算符, 与 ||
不同的是,??
只允许变量与undefined
和null
进行或运算
![](https://img.haomeiwen.com/i13851193/96a45d04dd590892.png)
![](https://img.haomeiwen.com/i13851193/7c4b1811cd14cea8.png)
Promise.AllSettled
Promise对象新增了AllSettled属性,允许传入条件语句来监听数组中所有的promise是否已经都已被resolve
const myArrayOfPromises = [
Promise.resolve(myPromise),
Promise.reject(0),
Promise.resolve(anotherPromise)
]
Promise.AllSettled(myArrayOfPromises).then ((result) => {
// Do your stuff
})
matchAll
matchAll方法相对于match方法返回更多的正则匹配的参数
![](https://img.haomeiwen.com/i13851193/7e54a48931b3c0c2.png)
网友评论