JavaScriptのECMAScript2020仕様が承認されました

JavaScriptの基礎となる公式仕様の最新バージョンであるECMAScript2020は、6月16日に、ECMAInternationalと仕様を監督するECMA技術委員会によって正式に承認されました。 

ECMAScript 2020には、import() モジュールをロードするための新しい機能から、BigInt 任意精度の整数を処理するための新しい タイプまで、さまざまな機能が導入されてい ます。 

ECMAScript2020によって導入された特定の機能は次のとおりです。

  • import()動的指定子を使用してモジュールを非同期にインポートするための「関数のような」モジュール読み込み構文。この提案は、import(specifier)関数のように多くの方法で機能する構文形式を追加します。モジュール自体とともに、モジュールの依存関係をフェッチ、インスタンス化、および評価した後に作成された、要求されたモジュールのモジュール名前空間オブジェクトのpromiseを返します。 specifier同じように解釈されるimport宣言。一方でspecifier、文字列である、それは必ずしも文字列リテラルではありません。したがって、のようなコードimport(`./language-packs/${navigator.language}.js`)は機能します。これは通常のimport宣言では不可能でした。計画では、import() は、モジュールとスクリプトの両方で機能するように提案されており、スクリプトコードにモジュールの世界への簡単な非同期エントリポイントを提供し、モジュールコードの実行を開始できるようにします。
  • BigInt,任意精度の整数を処理するための新しい数値プリミティブ。BigInt2より大きい53乗の数値を表すことができ、JavaScriptがNumberプリミティブで確実に表すことができる最大の数値。 ABigIntn、整数の末尾に追加するか、コンストラクターを呼び出すことによって作成されます。
  • matchAllグローバル正規表現によって生成されたすべての一致したオブジェクトのイテレータを生成するための文字列のメソッド。この提案の背後にある理論的根拠は、開発者が文字列と、複数のキャプチャグループを持つスティッキーまたはグローバル正規表現のいずれかを持っている場合、開発者はすべての一致を反復したい場合があるということです。現在、いくつかのオプションがありますが、制限があります。String#matchAll すべてのキャプチャグループへのアクセスを提供し、問題の正規表現オブジェクトを視覚的に変更しないことで、問題に対処します。
  • Promise.allSettled、短絡しない新しいPromiseコンビネータ。これは、promise状態のスナップショットの配列で実行されるpromiseを返しますが、元のpromiseが解決された後、つまり実行または拒否された後でのみです。
  • globalThis、グローバルなthis価値にアクセスするための普遍的な方法を提供します。
  • export * as ns from ‘module’モジュール内で使用する専用の構文。
  • for-inJavaScriptで列挙順序を部分的に指定して、列挙順序の標準化を強化しました。
  • import.meta,コンテキスト情報を含めることができる、モジュール内のホストが入力したオブジェクト。これはJavaScriptメタプロパティとして機能し、現在のモジュールに関するホスト固有のメタデータを保持します。
  • 無効な合体、プロパティアクセスを含むケースをより適切に処理するための値選択演算子。これは、「nullish」値(nullまたは未定義)の操作を改善するための構文機能です。
  • オプションの連鎖、アクセス/呼び出す値がnullの場合に短絡するプロパティアクセスおよび関数呼び出し演算子。 

ECMAScriptの最後の更新であるECMAScript2019は、prototype.flatMap ネストされた配列などの機能を備えていました。