ES2021(也被称为ES12)为前端开发引入了多项新特性,增强了JavaScript的语言能力和开发者的编程体验。以下是对ES2021新特性的清晰归纳:
-
String.prototype.replaceAll():
- 此方法允许开发者替换字符串中所有匹配的子字符串,而无需使用复杂的正则表达式。这简化了字符串的批量替换操作。
- 例如:
const newString = myString.replaceAll("Cat", "Dog");
会将所有"Cat"替换为"Dog"。
-
逻辑赋值运算符(Logical Assignment Operators):
- 包括
&&=
、||=
和??=
,这些运算符结合了逻辑运算符和赋值表达式,提供了更简洁的条件赋值方式。 - 例如:
a &&= b;
等价于if (a) { a = b; }
;a ||= b;
等价于if (!a) { a = b; }
;a ??= b;
等价于if (a === null || a === undefined) { a = b; }
。
- 包括
-
数字分隔符(Numeric Separators):
- 允许在数字中使用下划线
_
作为分隔符,以提高长数字的可读性。分隔符不能位于数字的开头或结尾,且相邻的分隔符之间至少需要一个数字。 - 例如:
const oneMillion = 1_000_000;
更易于阅读。
- 允许在数字中使用下划线
-
Promise.any():
- 此方法接收一个Promise对象的数组,并在其中任何一个Promise成功时返回该Promise的结果。如果所有Promise都失败,则抛出一个
AggregateError
异常。 - 这在处理多个并行的异步操作并只需要其中一个成功结果时非常有用。
- 此方法接收一个Promise对象的数组,并在其中任何一个Promise成功时返回该Promise的结果。如果所有Promise都失败,则抛出一个
-
WeakRefs和FinalizationRegistry:
WeakRef
允许创建对对象的弱引用,这意味着当对象没有其他强引用时,垃圾回收器可以回收该对象,而WeakRef
不会阻止这一行为。FinalizationRegistry
允许在垃圾回收器回收对象时执行回调函数,用于清理资源或执行其他相关操作。- 这两个特性对于管理内存和避免内存泄漏非常有帮助,特别是在处理大量数据或创建复杂的数据结构时。
这些新特性为前端开发者提供了更强大、更灵活的工具集,有助于提升代码的可读性、可维护性和性能。