JavaScriptの追加機能メモ(ES2022(ES13))
- トップレベルならawaitを使うのにasyncが不要
- クラスにプライベートなメンバが宣言可能に
- クラスに静的メンバが宣言可能に
- at演算子で配列の後ろからのアクセスが簡単に
- hasOwnPropertyを改良したhasOwn
- その他
久しぶりにJavaScriptでの開発を行うことになったので、過去のアップデートを拾ってみました。
ちなみに以下も記載しています。気になる方は目次だけでも眺めてみてください。
トップレベルならawaitを使うのにasyncが不要
- コードのトップレベルならば、わざわざ
asyncで関数を作らずにawait句を直接かけます。
await new Promise((resolve) => { setTimeout(() => { alert("1秒経ちました"); resolve(); }, 1000); });
クラスにプライベートなメンバが宣言可能に
- クラスのメンバの前に
#をつけることでprivateにできる。- プライベートなメンバ:クラスの外からアクセスできない。
- 従来のフィールドやメソッドはすべてパブリックだった。
class Counter { #count = 0; countUp() { this.#count++; } count() { return this.#count; } } var counter = new Counter(); counter.countUp(); console.log(counter.count()); console.log(counter.#count); // SyntaxErrorになる
クラスに静的メンバが宣言可能に
static句で静的メンバが使えるようになった。- 静的メンバとは、クラスをインスタンス化せずとも利用できるメンバのこと。
class Monkey{ static category = "animal" } console.log(Monkey.category); // animal
at演算子で配列の後ろからのアクセスが簡単に
- 配列や文字列で従来のブラケット[]アクセスの他に、
at演算子でアクセスが可能となった。
const hoge = ["one", "two", "three"] console.log(hoge.at(1)) // "two" console.log(hoge.at(-1)) // "three" console.log(hoge.at(-2)) // "two" //従来はhoge[hoge.length - 1]としてアクセスしてた
hasOwnPropertyを改良したhasOwn
- あるオブジェクトがあるプロパティを持つかどうか判定するために、
Obejct.property.hasOwnPropertyという記述はとても長いため、そのショートハンドとして、Object.hasOwnが利用化できるようになった。
const myObject = { name: "鈴木", } console.log(Object.hasOwn(myObject, "name")); // true