返回

ES2021:你不该错过的优秀新特性

前端

ES2021概述

ES2021是JavaScript语言的最新标准版本,于2021年6月发布。它在ES2020的基础上,新增了许多令人兴奋的新特性,包括:

  • 可选链操作符 (?.):允许您安全地访问嵌套对象的属性,而无需担心对象为null或undefined的情况。
  • 空值合并运算符 (??):允许您将一个值赋给变量,如果该变量为null或undefined,则使用另一个值作为默认值。
  • BigInt :一种新的数字类型,可以表示比Number类型更大的整数。
  • Promise.allSettled()方法 :允许您等待所有给定的Promise对象完成,无论它们是成功还是失败。
  • String.replaceAll()方法 :允许您用另一个字符串替换字符串中的所有匹配子串。
  • Array.flat()方法 :允许您将多维数组展平为一维数组。

ES2021新特性详解

接下来,我们将详细介绍ES2021中的一些关键新特性。

可选链操作符(?.)

可选链操作符(?.)允许您安全地访问嵌套对象的属性,而无需担心对象为null或undefined的情况。这避免了使用冗长的if语句来检查对象是否为null或undefined,从而使代码更加简洁和易读。

例如,以下代码使用可选链操作符安全地访问对象的属性:

const user = {
  name: "John Doe",
  address: {
    street: "123 Main Street",
    city: "Anytown",
    state: "CA",
  },
};

console.log(user?.address?.city); // "Anytown"

空值合并运算符(??)

空值合并运算符(??)允许您将一个值赋给变量,如果该变量为null或undefined,则使用另一个值作为默认值。这避免了使用冗长的if语句来检查变量是否为null或undefined,从而使代码更加简洁和易读。

例如,以下代码使用空值合并运算符将默认值赋给变量:

const username = user?.name ?? "Guest";

console.log(username); // "John Doe"

BigInt

BigInt是一种新的数字类型,可以表示比Number类型更大的整数。这对于处理大整数非常有用,例如金融计算或密码学。

例如,以下代码使用BigInt表示一个大整数:

const bigInt = 9007199254740991n;

console.log(bigInt); // 9007199254740991

Promise.allSettled()方法

Promise.allSettled()方法允许您等待所有给定的Promise对象完成,无论它们是成功还是失败。这对于需要等待多个异步操作完成的情况非常有用,例如当您需要等待多个网络请求完成时。

例如,以下代码使用Promise.allSettled()方法等待多个Promise对象完成:

const promises = [
  fetch("https://example.com/api/users"),
  fetch("https://example.com/api/posts"),
];

Promise.allSettled(promises).then((results) => {
  console.log(results);
});

String.replaceAll()方法

String.replaceAll()方法允许您用另一个字符串替换字符串中的所有匹配子串。这对于需要替换字符串中的所有匹配子串的情况非常有用,例如当您需要替换字符串中的所有空格时。

例如,以下代码使用String.replaceAll()方法替换字符串中的所有空格:

const str = "Hello world";

console.log(str.replaceAll(" ", "_")); // "Hello_world"

Array.flat()方法

Array.flat()方法允许您将多维数组展平为一维数组。这对于需要将多维数组转换为一维数组的情况非常有用,例如当您需要将一个二维数组转换为一维数组时。

例如,以下代码使用Array.flat()方法将二维数组展平为一维数组:

const arr = [[1, 2, 3], [4, 5, 6]];

console.log(arr.flat()); // [1, 2, 3, 4, 5, 6]

结论

ES2021是一次重大升级,它带来了许多令人兴奋的新特性。这些新特性可以帮助您编写更简洁、更易读、更高效的代码。如果您还没有开始使用ES2021,那么现在是时候了。