ECMAScript 2020 (ES11) 正式发布:比 ES10 带来了哪些变化?

阅读时长 5 分钟读完

ECMAScript 2020(ES11)是 JavaScript 编程语言的最新版本,它于2020年6月正式发布。本文将介绍ES11中的新特性,包括有用的功能和语言改进,以及如何在你的代码中使用它们。

新特性

1. Nullish 合并运算符

Nullish 合并运算符(??)是一个新的逻辑运算符,用于判断一个值是否为 null 或者 undefined,如果是,那么使用默认值。它与 || 运算符不同,|| 运算符会将所有 falsy 值(例如 ''0falsenull 等)都视为 false,而 ?? 运算符只对 nullundefined 值返回默认值。

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

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

2. 可选链操作符

可选链操作符(?.)是一个新的语法,它允许在访问深层次的对象属性或方法时,避免因为中间属性或方法不存在而导致的错误。当使用可选链操作符时,如果中间属性或方法不存在,则返回 undefined

3. Promise.allSettled

Promise.allSettled 方法接收一个 Promise 数组作为参数,返回一个 Promise 对象,当数组中所有 Promise 对象都执行完毕时,返回一个数组,数组中每个元素都是一个对象,包含 Promise 对象的执行结果和状态。

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

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

4. globalThis

globalThis 是一个新的全局对象,它可以在任何环境下访问到全局对象,包括浏览器、Node.js 和 Web Workers 等环境。在浏览器中,globalThis 指向 window 对象;在 Node.js 中,globalThis 指向 global 对象。

语言改进

除了上面的新特性之外,ES11 还进行了一些语言改进,包括:

1. String.prototype.matchAll

String.prototype.matchAll 方法可以一次性获取一个字符串中所有匹配的子字符串和匹配信息,返回一个迭代器对象,可以使用 for...of 循环遍历。

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

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

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

2. import()

import() 函数可以异步加载一个模块,返回一个 Promise 对象,可以使用 async/await 或者 Promise.then() 方法处理加载完成后的模块。

总结

ECMAScript 2020(ES11)引入了一些非常有用的新特性和语言改进,包括 Nullish 合并运算符、可选链操作符、Promise.allSettled、globalThis、String.prototype.matchAll 和 import() 函数。这些新特性和语言改进可以让我们更加方便地编写高效的 JavaScript 代码。

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

纠错
反馈