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 内部数值的存储和输出,并没有影响。