ECMAScript,简称 ES,是一种基于浏览器的脚本语言。它是 JavaScript 标准化的核心,规定了该语言的语法、类型、函数等基础特性。可以说,如果你是前端开发者,学习 ECMAScript 是必不可少的。本文将介绍 ECMAScript 2020 的一些新特性,希望对你有所启发。
可选链操作符
在以往的 JavaScript 中,查询对象的某个属性时,常常需要进行类似于下面这样的判断:
if (person && person.name && person.name.first) { // do something }
如果该对象已经被声明为 null 或 undefined,那么上述代码就会抛出异常,为了避免这种情况的发生,我们通常采用如下写法:
if (person && person.name && person.name.first) { // do something }
ECMAScript 2020 提供了可选链操作符 ?.,使得查询对象时更加方便:
const firstName = person?.name?.first;
如果 person、person.name 或者 person.name.first 为 null 或 undefined,该表达式不会抛出异常,而是返回 undefined。
空值合并运算符
在实际开发中,你可能会需要依次检查多个条件,如果条件都未满足,需要设定默认值。例如:
const price = data.price || 0;
上述代码的意思是,如果 data.price 为 undefined 或 null,那么 price 将被赋值为 0。ECMAScript 2020 引入了空值合并运算符 ??,用于使用默认值初始化丢失的变量:
const price = data.price ?? 0;
该运算符仅在左手操作数为 null 或 undefined 时返回右手操作数。
双 BigInt 支持
JavaScript 中 Number 类型是有范围限制的,如果你需要支持超过 253-1 的数字,那么需要使用 BigInt。在 ECMAScript 2020 中,支持了双 BigInt 的类型。例如:
const num1 = 10n; const num2 = 20n; const sum = num1 + num2; // 30n
Promise.allSettled
在之前的版本中,Promise.all 方法会在所有 Promise 都已经完成或其中任何一个 Promise 失败时才返回结果。例如:
const promises = [Promise.resolve('resolved'), Promise.reject('rejected')]; Promise.all(promises) .then(responses => console.log(responses)) .catch(errors => console.error(errors)); // rejected
在 ECMAScript 2020 中,Promise.allSettled 方法可以返回 Promise 数组结果的状态。例如:
const promises = [Promise.resolve('resolved'), Promise.reject('rejected')]; Promise.allSettled(promises) .then(results => console.log(results)); // [ // {status: "fulfilled", value: "resolved"}, // {status: "rejected", reason: "rejected"} // ]
总结
以上是 ECMAScript 2020 的一些新特性介绍,它们将使你的代码更加简洁、实用和易于维护。希望本文能给你提供有关 ECMAScript 的指导和启示。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65adf8bdadd4f0e0ff7840b1