クラスの静的初期化ブロック
新しいクラス静的初期化ブロック構文により、クラス定義ごとに1度だけ実行するコードをまとめて1つの場所に配置することができます。以下の例では、疑似乱数生成器が静的ブロックを使用してエントロピーのプールを初期化し、class MyPRNG の定義が評価される際に1度だけ実行されることを示しています。
新しいクラス静的初期化ブロック構文により、クラス定義ごとに1度だけ実行するコードをまとめて1つの場所に配置することができます。以下の例では、疑似乱数生成器が静的ブロックを使用してエントロピーのプールを初期化し、class MyPRNG の定義が評価される際に1度だけ実行されることを示しています。
JS-BigInt-Integration機能は、JavaScriptとWebAssembly間で64ビット整数を簡単に受け渡しできるようにします。この記事では、その意味と、それがなぜ便利であるかについて説明します。これには、開発者の作業を簡素化し、コードの実行速度を向上させ、さらにビルド時間を短縮することを含みます。
Atomics.wait および Atomics.notify は、ミューテックスやその他の同期手段を実装するために便利な低レベルの同期プリミティブです。しかし、Atomics.wait はブロッキングであるため、メインスレッドで呼び出すことはできません(試みると TypeError が投げられます)。
JavaScriptは、代入と二項演算を簡潔に表現できる一連の複合代入演算子をサポートしています。現在は、数学的またはビット演算のみがサポートされています。
JavaScript は、新しい正規表現拡張機能「マッチングインデックス」を搭載されました。JavaScript コードの中で予約語と一致する無効な変数名を見つけて、その変数名の下にキャレット(^)や「下線」を表示したい場合を想像してください。例えば以下のように:
JavaScript で文字列を扱ったことがあるなら、String#replace メソッドに出会ったことがあるでしょう。String.prototype.replace(searchValue, replacement) は指定されたパラメーターに基づいて一致する部分を置換した結果の文字列を返します:
トップレベルのawaitは、開発者が非同期関数の外部でawaitキーワードを使用できるようにします。それは、他のモジュールがそれらをimportする際に、モジュールのボディを評価する前に待機する大きな非同期関数のように動作します。
ヌリッシュ合体提案 nullish coalescing proposal (??) は、デフォルト値を処理するために設計された新しいショートサーキット演算子を追加します。
既に他のショートサーキット演算子 && と || に慣れているかもしれません。これらの両演算子は「truthy」と「falsy」の値を扱います。コード例 lhs && rhs を想像してください。もし lhs (左辺) が falsy なら、式は lhs を評価します。それ以外の場合、式は rhs (右辺) を評価します。コード例 lhs || rhs の場合、その逆が真となります。もし lhs が truthy なら、式は lhs を評価します。それ以外の場合、式は rhs を評価します。
JavaScriptでの長いプロパティアクセスチェーンはエラーが発生しやすく、そのどれもがnullまたはundefined(「ヌリッシュ」値として知られる)に評価される可能性があります。それぞれの手順でプロパティの存在を確認することは、簡単に深く入れ子になったif文構造やプロパティアクセスチェーンを複製する長いif条件に変わる可能性があります:
もし以前にWebブラウザで使用するJavaScriptを書いたことがあるなら、グローバルthisにアクセスするためにwindowを使用した可能性があります。Node.jsでは、globalを使ったことがあるかもしれません。どちらの環境でも動作するコードを書く場合、利用可能なものを検出して使用してきたかもしれませんが、サポートする環境とユースケースの数が増えるごとにチェックすべき識別子のリストは増加します。それはすぐに管理ができなくなります: