随着互联网的快速发展和技术的不断进步,JavaScript 已经成为了前端开发必不可少的一门语言。而 ECMAScript 则是 JavaScript 的标准化规范,它不断地更新和完善,以提高 JavaScript 代码的开发水平。本文将介绍 ECMAScript 2021 中的新特性,帮助读者更好地掌握 JavaScript 的开发技巧。
1. Promise.any()
Promise.any() 是 ECMAScript 2021 中的一个新特性,它可以接受一个 Promise 数组作为参数,返回其中任意一个 Promise 对象的结果。如果所有的 Promise 都失败了,它会抛出一个 AggregateError 错误。
示例代码:
-- -------------------- ---- ------- ----- -------- - - ------------------------- --------------------------- ------------------------ -- ----------------------------------- -- - -------------------- ---------------- -- - ------------------- ---
上述代码中,Promise.any() 接受了一个包含三个 Promise 对象的数组,其中只有一个 Promise 对象成功了,所以它返回了成功的 Promise 对象的结果。
2. Logical Assignment Operators
ECMAScript 2021 中引入了三个逻辑赋值运算符,即 &&=、||= 和 ??=。它们可以让我们更方便地进行赋值操作。
示例代码:
-- -------------------- ---- ------- --- - - -- --- - - -- --- - - ----- - --- -- --------------- -- -- - - --- -- --------------- -- -- - - --- -- --------------- -- -- -
上述代码中,&&= 表示如果 a 的值为真,则将 b 的值赋给 a;||= 表示如果 c 的值为假,则将 3 赋给 c;??= 表示如果 b 的值为 null 或者 undefined,则将 4 赋给 b。
3. String.prototype.replaceAll()
String.prototype.replaceAll() 可以用来替换字符串中的所有匹配项。它接受两个参数,第一个参数是要替换的字符串或正则表达式,第二个参数是替换后的字符串。
示例代码:
const str = 'hello world'; const newStr = str.replaceAll('l', 'L'); console.log(newStr); // 输出 heLLo worLd
上述代码中,我们使用 replaceAll() 将字符串中所有的 l 替换成 L。
4. Numeric Separators
ECMAScript 2021 中引入了数字分隔符,可以让我们更方便地阅读和书写数字。数字分隔符使用下划线(_)进行分隔,可以放在任意位置。
示例代码:
-- -------------------- ---- ------- ----- ---- - ---------- ----- ---- - ------------------- ----- ---- - -------- ----- ---- - -------- ------------------ -- -- ------- ------------------ -- -- ---- ------------------ -- -- --- ------------------ -- -- ---
上述代码中,我们使用数字分隔符分别表示了一个整数、一个二进制数、一个八进制数和一个十六进制数。
5. WeakRef 和 FinalizationRegistry
ECMAScript 2021 中引入了 WeakRef 和 FinalizationRegistry,它们可以让我们更好地管理内存,避免内存泄漏。
WeakRef 可以创建一个弱引用对象,当被引用的对象被垃圾回收时,弱引用对象会被自动清除。
FinalizationRegistry 可以注册一个回调函数,当被引用的对象被垃圾回收时,回调函数会被调用。
示例代码:
-- -------------------- ---- ------- ----- --- - --- ----- ------- - --- ------------- ----- -------------------- - --- ---------------------------- -- - ---------------- --- ---- ------- ------------ --- ---------------------------------- ----- -------- --- - ----- -- - --- --- ------------- -- ------
上述代码中,我们使用 WeakRef 创建了一个弱引用对象 weakRef,使用 FinalizationRegistry 注册了一个回调函数。当 obj 成为垃圾对象时,weakRef 会被自动清除,回调函数会被调用。
结论
ECMAScript 2021 中引入了许多新特性,可以让我们更好地编写 JavaScript 代码,提高开发效率。在实际开发中,我们应该根据具体情况选择使用哪些新特性,以达到最佳的开发效果。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6756d625ba81afebc523369b