Voyz's Studio.

ES11--2020年JavaScript的新特性

字数统计: 354阅读时长: 1 min
2020/12/24 Share

ES11–2020年JavaScript的新特性

2020年发布了新版本的EcmaScript,出现了许多新的特性,本文将逐一讨论这些新特性的用法

BigInt

之前JavaScript中Int类型整数的最大代表值为 9007199254740991, ES11加入了BigInt类型后可以超过这个值。

BigInt

动态导入

现在我们可以通过变量来动态的import模块, 接收模块的变量可以全局包含这些模块的命名空间。

1
2
3
4
let _module;

if ("option1") _module = await import('./module1.js');
else _module = await import('./module2.js');

模块导出

新的模块导出语法, 类似于之前的导入语法

1
2
3
4
5
6
// Added in ES11
export * as MyComponent from './Example.js'

// Existing
import * as MyComponent from './Example.js'

可选链(Optional Chaining)

现在JavaScript原生支持可选链调用的语法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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或操作符

新增加了 ?? 运算符, 与 || 不同的是,??只允许变量与undefinednull进行或运算

Jietu20200924-191802.png

Jietu20200924-191821.png

Promise.AllSettled

Promise对象新增了AllSettled属性,允许传入条件语句来监听数组中所有的promise是否已经都已被resolve

1
2
3
4
5
6
7
8
9
const myArrayOfPromises = [
Promise.resolve(myPromise),
Promise.reject(0),
Promise.resolve(anotherPromise)
]

Promise.AllSettled(myArrayOfPromises).then ((result) => {
// Do your stuff
})

matchAll

matchAll方法相对于match方法返回更多的正则匹配的参数

22344.png

CATALOG
  1. 1. ES11–2020年JavaScript的新特性
    1. 1.1. BigInt
    2. 1.2. 动态导入
    3. 1.3. 模块导出
    4. 1.4. 可选链(Optional Chaining)
    5. 1.5. null或操作符
    6. 1.6. Promise.AllSettled
    7. 1.7. matchAll