ECMAScript 2020 中的新特性有哪些?

阅读时长 5 分钟读完

ECMAScript 2020 是 JavaScript 语言的最新版本,于 2020 年 6 月发布。本文将介绍 ECMAScript 2020 中的新特性,包括可选链操作符、空值合并运算符、BigInt 类型、Promise.allSettled() 方法、String.prototype.matchAll() 方法和 import() 函数。

可选链操作符

可选链操作符(Optional Chaining Operator)是 ECMAScript 2020 中引入的一个新特性,用于简化代码中的空值检查操作。在旧版 JavaScript 中,我们需要通过多个 if 语句来判断对象的属性是否存在,才能安全地访问属性值。而使用可选链操作符,我们可以在访问属性时添加问号(?)来避免出现未定义的错误。

示例代码:

-- -------------------- ---- -------
----- ---- - -
  ----- --------
  -------- -
    ------- ---- ---- -----
    ----- ----------
    ------ -----
  --
--

----------------------------------- -- ---------

在上面的代码中,我们使用了可选链操作符来访问 user 对象的 address 属性中的 zipCode 属性。如果 address 属性不存在,则该表达式会返回 undefined。

空值合并运算符

空值合并运算符(Nullish Coalescing Operator)也是 ECMAScript 2020 中引入的一个新特性,用于简化代码中的空值检查操作。与可选链操作符不同的是,空值合并运算符只在变量值为 null 或 undefined 时才会生效。

示例代码:

-- -------------------- ---- -------
----- ---- - -
  ----- --------
  -------- -
    ------- ---- ---- -----
    ----- ----------
    ------ -----
  --
  -------- -----
--

------------------------ -- ----------- -- ----
---------------------------- -- ----------- -- -------

在上面的代码中,我们使用了空值合并运算符来检查 user 对象的 zipCode 和 phoneNumber 属性是否为 null 或 undefined。如果属性值为 null 或 undefined,则该表达式会返回默认值('unknown')。

BigInt 类型

BigInt 类型是 ECMAScript 2020 中引入的一个新类型,用于表示任意精度的整数。在旧版 JavaScript 中,整数的最大值为 2^53 - 1,而超出该范围的整数会被自动转换为浮点数。而使用 BigInt 类型,我们可以安全地表示任意精度的整数。

示例代码:

在上面的代码中,我们使用了 BigInt 类型来表示超出整数范围的整数,并对其进行加法运算。注意,在 BigInt 类型的整数后面必须添加后缀 n,否则会被解释为普通的整数。

Promise.allSettled() 方法

Promise.allSettled() 方法是 ECMAScript 2020 中引入的一个新方法,用于并行处理多个 Promise 对象,并返回每个 Promise 对象的状态和结果。与 Promise.all() 方法不同的是,Promise.allSettled() 方法会等待所有 Promise 对象都 settled(即 fulfilled 或 rejected)后再返回结果。

示例代码:

-- -------------------- ---- -------
----- -------- - -
  -------------------
  ------------------ ---------------
  -------------------
--

----------------------------------------- -- -
  ---------------------
---

在上面的代码中,我们使用 Promise.allSettled() 方法并行处理三个 Promise 对象,并在所有 Promise 对象 settled 后输出结果。结果数组中包含每个 Promise 对象的状态和结果,无论是 fulfilled 还是 rejected。

String.prototype.matchAll() 方法

String.prototype.matchAll() 方法是 ECMAScript 2020 中引入的一个新方法,用于在字符串中查找所有匹配正则表达式的子串,并返回一个迭代器对象。与 String.prototype.match() 方法不同的是,String.prototype.matchAll() 方法可以查找所有匹配的子串,而不只是第一个匹配的子串。

示例代码:

在上面的代码中,我们使用 String.prototype.matchAll() 方法查找字符串中所有匹配正则表达式 /\w+/g 的子串,并使用 for...of 循环输出每个匹配的子串。

import() 函数

import() 函数是 ECMAScript 2020 中引入的一个新方法,用于动态地加载模块。与静态 import 语句不同的是,import() 函数可以在代码运行时动态地加载模块,从而实现按需加载和代码分割等功能。

示例代码:

在上面的代码中,我们使用 import() 函数动态地加载模块,并在加载完成后调用模块的 doSomething() 方法。注意,import() 函数返回一个 Promise 对象,必须使用 await 或 then() 方法来获取模块对象。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67da56afa941bf713424634f

纠错
反馈