在撰写本文时,以下新的JavaScript提案功能已进入第4阶段,并且几乎肯定会包含在ES2021中。您已经可以开始在最新版本的浏览器,Node.js和Babel中使用。
注意:ECMAScript是JavaScript所基于的标准,由TC39委员会管理。ECMAScript始终是一个不需要的名称,这会使所有内容对初学者都感到困惑。人们经常谈论JavaScript功能,但参考的是ECMAScript规范。
Numeric Separators
1 |
|
Logical Assignment
支持与新的运营逻辑分配 &&=,||= 和 ??=。与它们的 mathematical and bitwise counterparts不同,逻辑分配遵循其各自逻辑操作的短路行为。仅当逻辑运算将评估右侧时,它们才执行分配。
1 |
|
Weak references and finalizers
此功能包含两个高级对象WeakRef和FinalizationRegistry。根据使用情况,这些接口可以单独使用,也可以一起使用。正确使用它们需要仔细考虑,如果可能,最好避免使用它们。
WeakRef 是一个更高级的 API,它提供了真正的弱引用,Weakref 实例具有一个方法 deref,该方法返回被引用的原始对象,如果原始对象已被收集,则返回 undefined 对象。
1 |
|
使用FinalizationRegistry对象可以在垃圾回收对象时请求回调。
1 |
|
Promise.any()
Promise.any 方法和 Promise.race 类似——只要给定的迭代中的一个 promise 成功,就采用第一个 promise 的值作为它的返回值,但与 Promise.race 的不同之处在于——它会等到所有 promise 都失败之后,才返回失败的值:
1 |
|
String.prototype.replaceAll
当前,如果不使用全局正则表达式,就无法替换字符串中子字符串的所有实例。与字符串参数一起使用时,String.prototype.replace仅影响首次出现。
String.prototype.replaceAll() 将为开发人员提供一种简单的方法来完成此常见的基本操作。
1 |
|
参考文章
数字分隔符
逻辑分配
Weak references and finalizers
Promose.any()
String.prototype.replaceAll()