インポートアサーション
新しいインポートアサーション機能により、モジュール指定子とともに追加の情報をインポート文に含めることができます。この機能の初期の用途として、JSON文書をJSONモジュールとしてインポート可能にすることがあります:
新しいインポートアサーション機能により、モジュール指定子とともに追加の情報をインポート文に含めることができます。この機能の初期の用途として、JSON文書をJSONモジュールとしてインポート可能にすることがあります:
in
演算子は、与えられたオブジェクト(またはそのプロトタイプチェーン内の任意のオブジェクト)が与えられたプロパティを持っているかどうかを確認するために使用できます:
const o1 = {'foo': 0};
console.log('foo' in o1); // true
const o2 = {};
console.log('foo' in o2); // false
const o3 = Object.create(o1);
console.log('foo' in o3); // true
プライベートブランドチェック機能は、このin
演算子を拡張してプライベートクラスフィールドもサポートします:
class A {
static test(obj) {
console.log(#foo in obj);
}
#foo = 0;
}
A.test(new A()); // true
A.test({}); // false
class B {
#foo = 0;
}
A.test(new B()); // false; 同じ#fooではない
プライベート名はそれを定義するクラスの内部でのみ利用可能であるため、テストは上記のstatic test
のようなメソッド内など、クラス内部で行う必要があります。
サブクラスのインスタンスは、親クラスからプライベートフィールドを自身のプロパティとして受け取ります:
class SubA extends A {};
A.test(new SubA()); // true
しかし、Object.create
で作成されたオブジェクトや、その後に__proto__
セッターやObject.setPrototypeOf
を使用してプロトタイプが設定されたオブジェクトは、プライベートフィールドを自身のプロパティとして受け取りません。プライベートフィールドの検索は自身のプロパティに対してのみ機能するため、in
演算子はこれらの継承されたフィールドを見つけることができません:
新しいクラス静的初期化ブロック構文により、クラス定義ごとに1度だけ実行するコードをまとめて1つの場所に配置することができます。以下の例では、疑似乱数生成器が静的ブロックを使用してエントロピーのプールを初期化し、class MyPRNG
の定義が評価される際に1度だけ実行されることを示しています。
JS-BigInt-Integration機能は、JavaScriptとWebAssembly間で64ビット整数を簡単に受け渡しできるようにします。この記事では、その意味と、それがなぜ便利であるかについて説明します。これには、開発者の作業を簡素化し、コードの実行速度を向上させ、さらにビルド時間を短縮することを含みます。
Atomics.wait
および Atomics.notify
は、ミューテックスやその他の同期手段を実装するために便利な低レベルの同期プリミティブです。しかし、Atomics.wait
はブロッキングであるため、メインスレッドで呼び出すことはできません(試みると TypeError
が投げられます)。
JavaScriptは、代入と二項演算を簡潔に表現できる一連の複合代入演算子をサポートしています。現在は、数学的またはビット演算のみがサポートされています。
全世界のユーザーに届くWebアプリケーションは、多くの異なる言語で言語名、地域名、スクリプト名、通貨名を表示する必要があります。それらの名称の翻訳にはデータが必要であり、そのデータはUnicode CLDRで利用可能です。これらのデータをアプリケーションの一部としてパッケージングすることは開発者の時間を費やすことにつながります。ユーザーは言語名や地域名の翻訳において一貫性を好む傾向があり、世界の地政学的動向に合わせてそのデータを更新するには、絶え間ないメンテナンスが必要です。
SIMDは、Single Instruction, Multiple Data(単一命令、複数データ)の略称です。SIMD命令は特別な種類の命令で、アプリケーション内のデータ並列性を活用し、複数のデータ要素に同時に同じ操作を行います。音声/映像コーデックや画像処理など、計算負荷の高いアプリケーションは、SIMD命令を利用してパフォーマンスを向上させています。ほとんどの現代的なアーキテクチャは、何らかの形でSIMD命令をサポートしています。
JavaScript は、新しい正規表現拡張機能「マッチングインデックス」を搭載されました。JavaScript コードの中で予約語と一致する無効な変数名を見つけて、その変数名の下にキャレット(^)や「下線」を表示したい場合を想像してください。例えば以下のように:
JavaScript で文字列を扱ったことがあるなら、String#replace
メソッドに出会ったことがあるでしょう。String.prototype.replace(searchValue, replacement)
は指定されたパラメーターに基づいて一致する部分を置換した結果の文字列を返します: