常见的 ECMAScript 2021 新特性及其用法

ECMAScript 2021 是 JavaScript 最新的版本,增加了许多新特性和语言特性。本文将介绍一些常见的 ECMAScript 2021 新特性及其用法。

1. Promise.any()

Promise.any() 方法接收多个 Promise 对象并返回一个新的 Promise 对象,该对象最终将以其中的任何一个 Promise 成功结束。这意味着只要其中一个 Promise 成功,就会返回结果,而不是等待所有 Promise 都成功或者都失败后才返回结果。

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

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

在上面的示例中,只要有一个 fetch 请求成功,Promise.any() 就会返回结果。

2. Logical Assignment Operators

ECMAScript 2021 引入了三个新的逻辑赋值运算符:||=、&&=、??= 。

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

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

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

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

在上面的示例中,我们可以看到逻辑赋值运算符的用法。||= 用于对变量进行赋值判断,只有变量为 null 或 undefined 时才会进行赋值;&&= 用于对变量进行赋值判断,只有变量不为 false 或 undefined 时才会进行赋值;??= 用于对变量进行赋值判断,只有变量为 null 或 undefined 时才会进行赋值。

3. String.prototype.replaceAll()

String.prototype.replaceAll() 方法可以替换一个字符串中所有的匹配子串。

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

在上面的示例中,我们可以看到通过 String.prototype.replaceAll() 方法可以将字符串中所有的匹配子串进行替换,而不是只替换第一个匹配子串。

4. Numeric Separators

ECMAScript 2021 引入了 数字分隔符,它允许在数字字面量中使用 _ 分隔符来增加可读性。

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

在上面的示例中,我们可以看到通过数字分隔符可以使数字字面量更加易读,而不会改变数字的值。

5. WeakRefs 和 FinalizationRegistry

ECMAScript 2021 引入了 WeakRefs 和 FinalizationRegistry 用于垃圾回收。

WeakRefs 是一种新的对象类型,该类型允许 JavaScript 引擎在 GC(垃圾回收)时删除其关联的对象。WeakRefs 建立了一个弱引用关系,允许被引用的对象在不被主程序强制引用时被垃圾回收。

FinalizationRegistry 是一个注册表,用于自动跟踪对象的“弱引用”,并在这些对象被 GC 后执行需要执行的任务。

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

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

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

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

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

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

在上面的示例中,我们可以看到通过使用 WeakRefs 和 FinalizationRegistry 实现了垃圾回收,即在对象没有被强制引用时自动回收对象占用的内存。

结论

ECMAScript 2021 引入了许多新特性和语言特性,包括 Promise.any()、逻辑赋值运算符、String.prototype.replaceAll()、数字分隔符、WeakRefs 和 FinalizationRegistry。这些新特性可以使开发更加简单和高效,提高编码效率和代码可读性,帮助 JavaScript 开发者更好地完成工作和创造价值。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/671467f3ad1e889fe213a9b7