前端研究这个必备,ECMAScript 2020 指南

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