ES11(也叫 ECMAScript 2020)是 JavaScript 的最新版本,于 2020 年 6 月发布。它增加了一些令人兴奋的新特性,本文将介绍其中一些。
1. BigInt
在 JavaScript 中,数字的精度受到了限制,即使是 Number.MAX_SAFE_INTEGER
,也只能表示到 2^53-1。但是在某些情况下,我们需要更大的数字,例如在加密算法中。BigInt 就是为此而生的。
BigInt 是一个新的数字类型,可以表示任意大的整数。它使用 n
后缀来表示,例如 10n
表示 10 这个 BigInt。BigInt 可以与普通数字进行运算,但它们不能混合使用。例如:
const bigNumber = 1234567890123456789012345678901234567890n; const normalNumber = 123; console.log(bigNumber + normalNumber); // TypeError: Cannot mix BigInt and other types
2. Promise.allSettled
Promise.allSettled 是一个新的 Promise 方法,它返回一个 Promise,该 Promise 在所有给定的 Promise 都已经完成或拒绝后解决。与 Promise.all 不同的是,即使其中的某个 Promise 被拒绝,Promise.allSettled 也会在所有 Promise 完成后解决。例如:
-- -------------------- ---- ------- ----- -------- - - --------------------------- ------------------------ ------------------------ --------- -- ----------------------------------------- -- - --------------------- --- -- ------- --------- ------------ ------ ----------- -------- ----------- ------- --------- -------- ------------ ------ -------- ----------
3. 可选链操作符
可选链操作符是一种新的语法,用于简化访问嵌套对象的代码。在旧的 JavaScript 中,访问深层嵌套的对象时,需要使用多个 if
语句来检查每个对象是否存在。例如:
if (obj && obj.prop1 && obj.prop1.prop2 && obj.prop1.prop2.prop3) { // Do something }
使用可选链操作符,可以将上面的代码简化为:
if (obj?.prop1?.prop2?.prop3) { // Do something }
这样,如果某个属性不存在,代码也不会崩溃。
4. Nullish 合并运算符
Nullish 合并运算符是一种新的语法,用于处理 null
或 undefined
值。在旧的 JavaScript 中,通常使用或运算符 ||
来提供默认值,例如:
const value = input || defaultValue;
但是,当 input
的值为 false
、0
、''
等 falsy 值时,上面的代码会出现错误。Nullish 合并运算符 ??
可以解决这个问题,它只在 input
的值为 null
或 undefined
时提供默认值。例如:
const value = input ?? defaultValue;
5. 动态 import()
动态 import() 是一种新的语法,用于在运行时加载模块。与静态 import 不同的是,动态 import() 返回一个 Promise,该 Promise 在模块加载完成后解决。例如:
const modulePath = './myModule.js'; import(modulePath).then(myModule => { myModule.doSomething(); });
结论
ES11 带来了一些令人兴奋的新特性,包括 BigInt、Promise.allSettled、可选链操作符、Nullish 合并运算符和动态 import()。这些特性可以让我们编写更简洁、更易读、更可靠的代码。如果你还没有开始使用它们,请尝试一下吧!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67664d0276af2b9a20f59354