- BigInt型の導入
- オプショナルチェーン(?.)で安全にチェーン
- null合体演算子(??)
- 正規表現でマッチした文字列をイテレータで返す(matchAll)
- 論理演算子(||)
- for-in文の順番が保証される
- その他
久しぶりにJavaScriptでの開発を行うことになったので、過去のアップデートを拾ってみました。
ちなみに以下も記載しています。気になる方は目次だけでも眺めてみてください。
- JavaScriptの追加機能メモ(ES2019(ES10))
BigInt型の導入
- Number型では大きすぎて表すことのできない数値を表現したり操作することが可能となる。Number型は2の53乗-1を超えると精度が落ちてしまいますが、BigIntを用いれば正確に整数を扱える。
使い方は、整数の末尾に
n
を付けるか、BigInt(数字)
とする
const num = 200n // bigint型 const num2 = BigInt(300) // bigint型 console.log(typeof num); // 'bigint' console.log(typeof num2); // 'bigint'
オプショナルチェーン(?.)で安全にチェーン
- 構文を用いてnullやundefinedになりうる値へ安全にアクセスできる仕組み。
- 従来は存在しないプロパティにアクセスするとエラーが発生していたが、オプショナルチェーンを利用すると、存在しないプロパティにアクセスしてもundefinedとなる。
// 従来の書き方 if (obj.foo) { console.log(obj.foo.baa); } // ES2020以降の新しい書き方 console.log(obj.foo?.baa); // => foo が未定義の場合は undefined
null合体演算子(??)
A ?? B
と記載した場合、Aがnullかundefinedの場合はBを評価し、そうでないならAとを評価する。
const A = null const B = A ?? "コーヒー" console.log(B) // コーヒー const C = "紅茶" const D = C ?? "コーヒー" console.log(D) // 紅茶
正規表現でマッチした文字列をイテレータで返す(matchAll)
const str = "1ab5cdef4gh5i" console.log([...str.matchAll(/[0-9]+/g)]) /** * [ [ '1', index: 0, input: '1ab5cdef4gh5i', groups: undefined ], [ '5', index: 3, input: '1ab5cdef4gh5i', groups: undefined ], [ '4', index: 8, input: '1ab5cdef4gh5i', groups: undefined ], [ '5', index: 11, input: '1ab5cdef4gh5i', groups: undefined ] ] */
論理演算子(||)
for-in文の順番が保証される
- 従来はfor-in文で繰り返されるオブジェクト等の順番は必ずしも先頭からイテレートされるのではなく、順不同だった。ES2020からはその順番が保証るようになった。
その他
- importしたものをそのままexportする
- モジュールのメタ情報を得る
- Promise.allSettledによる非同期処理
- ブラウザとNode.js共通のグローバルオブジェクト(globalThis)