ES2021
str.replaceAll()
tc39/proposal-string-replaceall
字符串的实例方法replace()只能替换第一个匹配,除非使用正则并设置g修饰符。replaceAll()解决了这个问题,一次性替换所有匹配。
js
String.prototype.replaceAll(searchValue, replacement)searchValue可以是一个字符串,也可以是一个全局的正则表达式(带有g修饰符,不带会报错)。
Promise.any()
tc39/proposal-promise-anyPromise.any()跟Promise.race()方法很像,只有一点不同,就是Promise.any()不会因为某个Promise变成rejected状态而结束,必须等到所有参数Promise变成rejected状态才会结束。
AggregateError
tc39/proposal-promise-any
新增错误类型,用于同时抛出多个错误。
逻辑赋值运算符
tc39/proposal-logical-assignment
js
// "Or Or Equals" (or, the Mallet operator :wink:)
a ||= b;
a || (a = b);
// "And And Equals"
a &&= b;
a && (a = b);
// "QQ Equals"
a ??= b;
a ?? (a = b);WeakRef
tc39/proposal-weakrefs
规范定义了2个构造函数
- WeakRef
- 创建对象的弱引用
wf = new WeakRef({}) wr.deref()检查判断原始对象是否已清除
- 创建对象的弱引用
- FinalizationRegistry 用于内存回收时执行回调
数值分隔符
tc39/proposal-numeric-separator1_000只是一种书写便利,对于 JavaScript 内部数值的存储和输出,并没有影响。