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