跳到主要内容

5 篇博文 含有标签「ES2021」

查看所有标签

String.prototype.replaceAll

· 阅读需 4 分钟
Mathias Bynens ([@mathias](https://twitter.com/mathias))

如果你曾经处理过 JavaScript 中的字符串,很可能遇到过 String#replace 方法。String.prototype.replace(searchValue, replacement) 根据你指定的参数返回一个替换了一些匹配项的字符串:

弱引用和终结器

· 阅读需 10 分钟
Sathya Gunasekaran ([@_gsathya](https://twitter.com/_gsathya)), Mathias Bynens ([@mathias](https://twitter.com/mathias)), Shu-yu Guo ([@_shu](https://twitter.com/_shu)), and Leszek Swirski ([@leszekswirski](https://twitter.com/leszekswirski))

一般来说,JavaScript 中对象的引用是_强引用_,这意味着只要你有对对象的引用,它就不会被垃圾回收。

const ref = { x: 42, y: 51 };
// 只要你可以访问到 `ref`(或其他对同一对象的引用),这个对象就不会被垃圾回收。

目前,WeakMapWeakSet 是在 JavaScript 中以某种方式弱引用对象的唯一方式:将一个对象作为键添加到 WeakMapWeakSet 中不会阻止它被垃圾回收。

const wm = new WeakMap();
{
const ref = {};
const metaData = 'foo';
wm.set(ref, metaData);
wm.get(ref);
// → metaData
}
// 我们在这个代码块作用域中不再拥有对 `ref` 的引用,因此它现在可以被垃圾回收,尽管它是 `wm` 中的一个键,而我们仍然可以访问到 `wm`。

Promise 组合器

· 阅读需 4 分钟
Mathias Bynens ([@mathias](https://twitter.com/mathias))

自从 ES2015 引入 Promise 后,JavaScript 支持的 Promise 组合器只有两个:静态方法 Promise.allPromise.race

目前有两个新提案正在进行标准化过程:Promise.allSettledPromise.any。随着这些新增内容,JavaScript 中将总共有四种 Promise 组合器,每种都支持不同的使用场景。

数字分隔符

· 阅读需 2 分钟
Mathias Bynens ([@mathias](https://twitter.com/mathias))

大型数字字面量对人眼来说难以快速解析,特别是当数字中有大量重复数字时:

1000000000000
1019436871.42

为了提高可读性,一个新的JavaScript语言特性允许在数字字面量中使用下划线作为分隔符。因此,上述内容现在可以改写为按千分进行分组,例如: