跳至主要内容

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)), 和 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 語言特性允許在數字字面值中使用底線作為分隔符。因此,可以將上述數字重新編寫,以每千位分組為例: