ECMAScript 2022
JavaScriptバージョン番号
古いECMAScriptバージョンは数字で命名されています:ES5およびES6。
2016年から、バージョンは年で命名されています:ES2016、2018、2020、2022。
ES2022の新しい機能
- Array at()
- String at()
- RegExp /d
- Object.hasOwn()
- error.cause
- await import
- クラスフィールド宣言
- プライベートメソッドとフィールド
警告:
これらの機能は比較的新しいです。
旧版ブラウザでは代替コード(Polyfill)が必要になる可能性があります。
JavaScript Array at()
ES2022では配列メソッドが導入されました at()
:
例1
fruits配列の第3要素を取得します:
const fruits = ["Banana", "Orange", "Apple", "Mango"]; let fruit = fruits.at(2);
例2
fruits配列の第3要素を取得します:
const fruits = ["Banana", "Orange", "Apple", "Mango"]; let fruit = fruits[2];
at()
メソッドは指定されたインデックスの要素を配列から返します。
at()
メソッドは []
返される結果は同じです。
2022年3月から、すべての現代ブラウザでサポートされています at()
メソッド:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 92 | Edge 92 | Firefox 90 | Safari 15.4 | Opera 78 |
2021 年 4 月 | 2021年7月 | 2021年7月 | 2022年3月 | 2021年8月 |
注意:
多くの言語では負のインデックスを使用することができます(例えば [-1]
)オブジェクト/配列/文字列の最後の要素にアクセスする方法
これはJavaScriptでは実行不可能です、なぜなら []
配列やオブジェクトにアクセスするために使用されます。obj[-1]は、オブジェクトの最後の属性ではなく、キー-1の値を指します。
at()
このメソッドはES2022で導入され、この問題を解決するために使用されます。
JavaScript String at()
ES2022では文字列メソッドが導入されました at()
:
例1
name 文字列の第3文字を取得します:
const name = "W3Schools"; let letter = name.at(2);
例2
name 文字列の第3文字を取得します:
const name = "W3Schools"; let letter = name[2];
at()
メソッドは、文字列から指定されたインデックスの文字を返します。
at()
メソッドは []
返される結果は同じです。
2022年3月から、すべての現代ブラウザでサポートされています at()
メソッド:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 92 | Edge 92 | Firefox 90 | Safari 15.4 | Opera 78 |
2021 年 4 月 | 2021年7月 | 2021年7月 | 2022年3月 | 2021年8月 |
RegExp d 修飾子を追加しました。
ES2022は、 /d
修飾子は、マッチングの開始と終了を示すために使用されます。
インスタンス
let text = "aaaabb"; let result = text.match(/(aa)(bb)/d);
RegExp 修飾子は、大文字と小文字を区別しない、および他のグローバル検索を指定するために使用されます:
修飾子 | 説明 | 試してみてください |
---|---|---|
g | グローバルマッチング(すべてを検索)を実行します。 | 試してみてください |
i | 大文字と小文字を区別しないマッチングを実行します。 | 試してみてください |
d | サブ文字列マッチング(ES2022 新規追加)を実行します。 | 試してみてください |
m | 複数行のマッチングを実行します。 | 試してみてください |
Object.hasOwn()
ES2022は、属性がオブジェクトの固有属性であるかどうかを安全に確認する方法を提供しています。
Object.hasOwn()
似ている Object.prototype.hasOwnProperty
ですが、すべてのオブジェクトタイプをサポートしています。
インスタンス
Object.hasOwn(myObject, age)
エラー原因
ES2022は、error.causeを通じてエラーの根本原因を指定することができます。
インスタンス
try { connectData(); } throw new Error("接続失敗", { cause: err }); }
JavaScript await import
JavaScript モジュールは、実行前に必要なインポートリソースを待つことができます:
import {myData} from './myData.js'; const data = await myData();
JavaScript クラスフィールド宣言
class Hello { counter = 0; // クラスフィールド } const myClass = new Hello(); let x = myClass.counter;
2021年4月から、すべての現代ブラウザでクラスフィールドの宣言がサポートされています:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 72 | Edge 79 | Firefox 69 | Safari 14.1 | Opera 60 |
2019年1月 | 2020 年 1 月 | 2019年9月 | 2021 年 4 月 | 2020 年 1 月 |
JavaScript プライベートメソッドとフィールド
class Hello { #counter = 0; // プライベートフィールド #myMethod() {} // プライベートメソッド } const myClass = new Hello(); let x = myClass.#counter; // エラー myClass.#myMethod(); // エラー
2021 年 6 月から、すべての現代ブラウザでプライベートメソッドとフィールドがサポートされています:
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 74 | Edge 79 | Firefox 90 | Safari 14.1 | Opera 62 |
2019 年 4 月 | 2020 年 1 月 | 2021 年 6 月 | 2021 年 4 月 | 2019 年 6 月 |