ECMAScript 2020是JavaScript底層官方規範的下一個版本,預計将在6月正式采用,但需要獲得ECMA International和負責規範的ECMA技術委員會的準許。
ECMAScript 2020引入了多種功能,從用于加載子產品的新
import()
工具到用于處理任意精度整數的新
BigInt
類型。
[ 同樣在InfoWorld上:TypeScript與JavaScript:了解差異 ]
ECMAScript 2020計劃的特定功能包括:
- “函數式”
子產品加載文法,以使用動态說明符異步導入子產品。 該提案添加了import()
文法形式,其功能類似于函數。 它傳回請求子產品的子產品名稱空間對象的承諾,該承諾是在擷取,執行個體化和評估子產品的依賴項以及子產品本身之後建立的。 該import(specifier)
解釋方式與specifier
聲明中的解釋方式相同。import
是字元串,但不一定是字元串文字。 是以,像specifier
這樣的代碼就可以工作。 通常的import(`./language-packs/${navigator.language}.js`)
申報單不可能做到這一點。 根據該計劃,建議使用import
在子產品和腳本中都可以使用,進而為腳本代碼提供了進入子產品世界的簡便異步入口點,并允許其開始運作子產品代碼。import()
-
一個新的數字原語,用于處理任意精度的整數。BigInt ,
可以表示大于2到53的幂的數字,JavaScript可以使用Number原語可靠地表示最大的數字。 通過将BigInt
附加到整數的末尾或調用構造函數來建立n
。BigInt
- 用于字元串的
方法,用于為全局正規表達式生成的所有比對對象生成一個疊代器。 此提議的基本原理是,如果開發人員具有字元串以及帶有多個捕獲組的粘滞或全局正規表達式,則開發人員可能希望周遊所有比對項,為此,目前存在多種選擇,但有局限性。matchAll
通過提供對所有捕獲組的通路而不會明顯改變所讨論的正規表達式對象來解決問題。String#matchAll
-
,一個不會短路的新的Promise組合器。 這将傳回一個承諾,該承諾将通過一系列承諾狀态快照來實作,但前提是必須滿足原始承諾,即已經實作或拒絕了。allSettled
-
,提供了一種通路全局globalThis
值的通用方法。this
-
文法專用export * as ns from 'module'
以在子產品内使用。export * as ns from 'module'
- 增加了
枚舉順序的标準化,在JavaScript中部分指定了枚舉順序。for-in
-
是Modules中一個主機填充的對象,可以包含上下文資訊。 這用作JavaScript元屬性,儲存有關目前子產品的主機特定的中繼資料。import.meta ,
- 空值合并 ,一個值選擇運算符,用于更好地處理涉及财産通路的案件。 它是一種文法功能,可以改善對“空”值(
或未定義)的使用。null
- 可選連結 ,一個屬性通路和函數調用運算符,如果要通路/調用的值為空,它将短路。
ECMAScript的最新更新ECMAScript 2019具有嵌套數組的
prototype.flatMap
等功能。
From: https://www.infoworld.com/article/3538809/ecmascript-2020-spec-for-javascript-moves-forward.html