ES11 的新特性你了解多少?

ES11(也称为 ES2020)是 ECMAScript 标准的最新版本,它于 2020 年 6 月发布。本文将介绍一些 ES11 的新特性,包括 BigInt、Promise.allSettled、可选链操作符、Nullish 合并运算符等。这些新特性将有助于提高开发者的效率和代码的可读性。

BigInt

在 JavaScript 中,Number 类型的值有一个最大安全整数(2^53 - 1),如果超过这个范围,就会出现精度丢失的问题。BigInt 是一种新的原始数据类型,它可以表示任意大的整数,而不会出现精度丢失的问题。

BigInt 类型的值以 n 结尾,可以通过在数字后面添加 n 来创建 BigInt,例如:

BigInt 类型的值可以与 Number 类型的值进行运算,但是需要注意的是,BigInt 与 Number 进行运算时,结果也是 BigInt 类型的值。

Promise.allSettled

Promise.all 方法可以将多个 Promise 对象合并成一个 Promise 对象,当所有的 Promise 对象都成功时,返回一个包含所有 Promise 结果的数组;当其中一个 Promise 对象失败时,则返回该 Promise 对象的错误信息。但是,如果我们需要知道所有 Promise 对象的状态,而不仅仅是成功或失败,我们可以使用 Promise.allSettled 方法。

Promise.allSettled 方法返回一个 Promise 对象,当所有的 Promise 对象都执行完毕时,返回一个包含所有 Promise 对象的状态和结果的数组,例如:

输出结果为:

可选链操作符

当我们需要访问一个对象的属性或方法时,如果该对象不存在或者该属性或方法不存在,就会出现错误。为了解决这个问题,ES11 引入了可选链操作符(?.)。

可选链操作符可以在对象属性或方法前添加一个问号(?),表示如果该对象不存在或者该属性或方法不存在,就返回 undefined,例如:

可选链操作符也可以与函数调用一起使用,例如:

Nullish 合并运算符

在 JavaScript 中,当我们需要为变量赋一个默认值时,通常使用 || 运算符,例如:

但是,当变量的值为 falsy 值(例如 0、""、false、null、undefined 等)时,|| 运算符会返回第二个值,这可能不是我们想要的结果。为了解决这个问题,ES11 引入了 Nullish 合并运算符(??)。

Nullish 合并运算符只有在变量的值为 null 或 undefined 时,才返回第二个值,例如:

当 person.name 的值为 null 或 undefined 时,name 的值为 "Unknown";否则,name 的值为 person.name 的值。

总结

ES11 的新特性包括 BigInt、Promise.allSettled、可选链操作符、Nullish 合并运算符等,这些新特性可以提高开发者的效率和代码的可读性。在使用这些新特性时,需要注意它们的兼容性和语法规则,以免出现错误。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/653b71237d4982a6eb5c8ecf


纠错
反馈