跳至主要内容

39 篇文章 含有標籤「ECMAScript」

檢視所有標籤

類別靜態初始化區塊

· 閱讀時間約 2 分鐘
Shu-yu Guo ([@_shu](https://twitter.com/_shu))

新的類別靜態初始化區塊語法允許開發者將應該在某個類別定義中執行一次的代碼集中到一個地方。以下是一個示例,其中一個偽隨機數生成器使用靜態區塊在 class MyPRNG 定義被評估時初始化熵池一次。

正則表達式匹配索引

· 閱讀時間約 5 分鐘
Maya Armyanova ([@Zmayski](https://twitter.com/Zmayski)),經常表達新功能

JavaScript 現在配備了一項新的正則表達式增強功能,稱為「匹配索引」。假設您想在 JavaScript 代碼中找到與保留字重合的無效變量名,並在變量名稱下方顯示插入符號和「下劃線」,例如:

`String.prototype.replaceAll`

· 閱讀時間約 4 分鐘
Mathias Bynens ([@mathias](https://twitter.com/mathias))

如果你曾經在 JavaScript 中處理過字串,很可能遇到過 String#replace 方法。String.prototype.replace(searchValue, replacement) 根據你指定的參數返回一個進行部分匹配替換後的字串:

頂層`await`

· 閱讀時間約 5 分鐘
Myles Borins ([@MylesBorins](https://twitter.com/MylesBorins))

頂層await使開發者能夠在 async 函數之外使用 await 關鍵字。它像是一個大的 async 函數,會讓其他import它的模組在開始評估它們的主體之前等待。

Nullish coalescing

· 閱讀時間約 7 分鐘
Justin Ridgewell

新的 Nullish 合併提案 (??) 添加了一個短路運算符,用於處理默認值。

你可能已經熟悉其他短路運算符 &&||。這兩個運算符處理“真值”和“假值”。假設代碼示例 lhs && rhs,如果 lhs(讀作 左側)是假值,該表達式求值為 lhs。否則,則求值為 rhs(讀作 右側)。而在代碼示例 lhs || rhs 中則相反。如果 lhs 是真值,該表達式求值為 lhs。否則,則求值為 rhs

可選鏈(Optional chaining)

· 閱讀時間約 5 分鐘
Maya Armyanova ([@Zmayski](https://twitter.com/Zmayski)),可選鏈的破壞者

在 JavaScript 中,長鏈的屬性訪問可能容易出錯,因為其中任何一步都可能評估為 nullundefined(也稱為“空值”)。在每一步進行屬性存在檢查,很容易變成深度嵌套的 if 語句或一個長長的 if 條件,複製屬性訪問的鏈路:

`globalThis`

· 閱讀時間約 2 分鐘
Mathias Bynens ([@mathias](https://twitter.com/mathias))

如果你曾經為瀏覽器編寫 JavaScript,可能使用過 window 來訪問全域 this。在 Node.js 中,你可能使用過 global。如果你編寫了需要同時在這兩個環境中運作的代碼,可能會檢測哪個可用,然後使用它 —— 但隨著你要支持的環境和使用情境增加,需要檢查的標識符列表也會越來越長,事情很快就會變得難以控制: