Skip to content
导航

ES2021

str.replaceAll()

tc39/proposal-string-replaceall
字符串的实例方法replace()只能替换第一个匹配,除非使用正则并设置g修饰符。
replaceAll()解决了这个问题,一次性替换所有匹配。

js
String.prototype.replaceAll(searchValue, replacement)

searchValue可以是一个字符串,也可以是一个全局的正则表达式(带有g修饰符,不带会报错)。

Promise.any()

tc39/proposal-promise-any
Promise.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-separator
1_000只是一种书写便利,对于 JavaScript 内部数值的存储和输出,并没有影响。

参考资料