ECMAScriptの変更履歴
外部リンク

各バージョンの差分

ES2022 (13) ⇒ ES2023 (14)
ES2022 Intl (9) ⇒ ES2023 Intl (10)

項目備考
スクリプトファイルのコメント 先頭行の #! をコメント扱い
Array【配列】オブジェクト
~Array【型指定配列ビュー (%TypedArray%)】オブジェクト
・メソッド
後方検索 追加
Array.findLast【値検索 (後方・ユーザ関数)】
Array.findLastIndex【インデックス検索 (後方・ユーザ関数)】
%TypedArray%.findLast【値検索 (後方・ユーザ関数)】
%TypedArray%.findLastIndex【インデックス検索 (後方・ユーザ関数)】
コピー後に配列変更 追加 (元配列変更なし)
Array.toReversed【要素反転 (配列変更なし)】
Array.toSorted【ソート (配列変更なし)】
Array.toSpliced【要素削除&挿入 (配列変更なし)】
Array.with【コピー&要素変更 (配列変更なし)】
%TypedArray%.toReversed【要素反転 (配列変更なし)】
%TypedArray%.toSorted【ソート (配列変更なし)】
%TypedArray%.with【コピー&要素変更 (配列変更なし)】
WeakMap【弱参照マップ】オブジェクト WeakMapのキーにSymbol可
Intl【国際化API名前空間】 オブジェクト ・メソッド
 Intl.supportedValuesOf【実装サポート値取得】追加
Intl.NumberFormat【国際化数値フォーマット】 オブジェクト ・オプション
 useGrouping【桁区切りの使用】の設定値を変更
 signDisplay【符号表示】に 'negative'【負数のみ表示 (-0 を含まない)】を追加
 roundingMode追加
 roundingIncrement追加
 roundingPriority追加
 trailingZeroDisplay【小数点以下のゼロ表示方法】追加
・メソッド
 Intl.NumberFormat.formatRange【フォーマット (範囲)】追加
 Intl.NumberFormat.formatRangeToParts【フォーマットパーツ取得 (範囲)】追加
Intl.PluralRules【複数形ルール】 オブジェクト ・メソッド
 Intl.PluralRules.selectRange【カテゴリ取得 (範囲)】追加

ES2021 (12) ⇒ ES2022 (13)
ES2021 Intl (8) ⇒ ES2022 Intl (9)

項目備考
トップレベルの await
class【クラス】 ・要素追加
 public (static) フィールド
 private (static) フィールド
 private (static) メソッド
class【クラス】static ブロック 追加
private フィールドの存在確認 構文 #x in obj
RegExp【正規表現】オブジェクト d【キャプチャ部分の範囲インデックス取得】フラグ の追加
~Error【各種エラー】オブジェクト ・オプション プロパティ
 cause【エラー原因】追加
  (コンストラクタにオプション追加)
String【文字列】オブジェクト
Array【配列】オブジェクト
~Array【型指定配列ビュー (%TypedArray%)】オブジェクト
・メソッド
 at【インデックス位置要素 取得】追加
  String.at【インデックス位置要素 取得】
  Array.at【インデックス位置要素 取得】
  ~Array.at【インデックス位置要素 取得】
Object【オブジェクト】オブジェクト ・メソッド
 Object.hasOwn【プロパティ有無 (省略形)】追加
Intl.Segmenter【国際化:テキスト区切り】 オブジェクト 新規追加
Intl.DateTimeFormat【国際化日時フォーマット】 オブジェクト オプション
 timeZoneName【タイムゾーン名】に値追加
Intl.DisplayNames【国際化表示名】 オブジェクト languageDisplay【言語表示】オプション追加
type【タイプ】オプション
 calendar【暦】追加
 dateTimeField【日時フィールド】追加

ES2020 (11) ⇒ ES2021 (12)
ES2020 Intl (7) ⇒ ES2021 Intl (8)

項目備考
AggregateError【複数エラー】オブジェクト追加
FinalizationRegistry【ファイナライザ登録】オブジェクト追加
Promise【非同期処理】オブジェクト ・メソッド
 any 追加
String【文字列】オブジェクト ・メソッド
 replaceAll【全置換 (正規表現可・関数指定可)】追加
WeakRef【弱参照】オブジェクト追加
論理代入演算子
&&=
||=
??=
追加
数値セパレータ (例:1_234_567) 追加
参照:Number【数値】BigInt【任意精度整数】
Intl.DisplayNames【国際化表示名】 オブジェクト追加
Intl.ListFormat【国際化リスト要素フォーマット】 オブジェクト追加
Intl.DateTimeFormat【国際化日時フォーマット】 オブジェクト ・オプション
 オプション項目 追加
・メソッド
 formatRange【範囲フォーマット】追加
 formatRangeToParts【範囲フォーマットパーツ取得】追加

ES2019 (10) ⇒ ES2020 (11)
ES2019 Intl (6) ⇒ ES2020 Intl (7)

項目備考
String【文字列】オブジェクト ・メソッド
 matchAll()【正規表現検索 (詳細イテレータ)】追加
import動的 import() 追加
BigInt【任意精度整数】オブジェクト 標準組み込みオブジェクトに追加
Promise【非同期処理】オブジェクト ・メソッド
 allSettled 追加
globalThis【グローバル this値】グローバル オブジェクトに追加
exportexport * as ns from 'module' 追加
for-in列挙順序の固定
import.meta追加
??【Null 合体 演算子】追加
?.【オプショナル チェイニング演算子】追加
Intl.Locale【Unicode ロケール識別子】 オブジェクト追加
Intl.RelativeTimeFormat【国際化相対時間フォーマット】 オブジェクト 追加
Intl.NumberFormat【国際化数値フォーマット】 オブジェクト ・オプション
 オプション項目 追加

ES2018 (9) ⇒ ES2019 (10)
ES2018 Intl (5) ⇒ ES2019 Intl (6)

項目備考
構文try-catch の 例外オブジェクト引数省略可能
文字列リテラル エスケープされていない下記コードを許可
(詳細は、JSON オブジェクト 参照)
・U+2028 (LINE SEPARATOR)
・U+2029 (PARAGRAPH SEPARATOR)
Array【配列】オブジェクト ・メソッド
 flat【配列生成 (深さ指定)】追加
 flatMap【配列生成 (関数指定)】追加
 sort【ソート】 順序固定
Function【関数】オブジェクト toString【文字列変換】 仕様変更
JSON【JavaScript Object Notation】オブジェクト ・メソッド
 stringify()【JavaScript 値 ⇒ JSON テキスト】
  不正なサロゲートペアはエスケープしたコード文字列を返却
Object【オブジェクト】オブジェクト ・メソッド
 fromEntries【オブジェクト生成 (イテラブル)】追加
String【文字列】オブジェクト ・メソッド
 trimEnd【末尾の空白削除】追加
 trimStart【先頭の空白削除】追加
Symbol【シンボル】オブジェクト ・プロパティ
 description【説明文】追加
Atomics【不可分操作】オブジェクト ・メソッド
 wake を notify に名前変更

ES2017 (8) ⇒ ES2018 (9)
ES2017 Intl (4) ⇒ ES2018 Intl (5)

項目備考
式・演算子・...【スプレッド演算子】がオブジェクトにも使用可
構文 ・非同期対応のイテレータ (for-await-of) 追加
タグ付きテンプレートリテラルの仕様変更
 不正なエスケープシーケンスは、SyntaxError例外 ではなく undefined
Promise【非同期処理】オブジェクト ・メソッド
 finally() 追加
RegExp【正規表現】オブジェクト s【改行文字対応】フラグの追加
・各種正規表現パターン追加
 名前付きキャプチャ (?<name>~)
 名前付きキャプチャの後方参照 \k<name>
 肯定後読み (?<=~)
 否定後読み (?<!~)
 ユニコード文字プロパティ
・メソッド (名前付きキャプチャ 対応)
 exec【検索】
String【文字列】オブジェクト ・メソッド (名前付きキャプチャ 対応)
 match【正規表現検索 (詳細)】
 replace【置換 (正規表現可・関数指定可)】
Intl.PluralRules【複数形ルール】 オブジェクト オブジェクト 追加
Intl.NumberFormat【国際化数値フォーマット】 ・メソッド
 formatToParts【フォーマットパーツ取得】

ES2016 (7) ⇒ ES2017 (8)
ES2016 Intl (3) ⇒ ES2017 Intl (4)

追加備考
関数非同期関数 (async/await)
引数の末尾カンマ有効
標準組み込みオブジェクト Atomics【不可分操作】
SharedArrayBuffer【共有バイナリデータ配列】
Object【オブジェクト】オブジェクト
メソッド
・メソッド
 entries【プロパティ配列取得 (キー・値)】
 getOwnPropertyDescriptors【全プロパティ記述子 取得】
 values【プロパティ配列取得 (値)】
String【文字列】オブジェクト
メソッド
・メソッド
 padEnd【末尾パディング】
 padStart【先頭パディング】
Intl.DateTimeFormat【国際化日時フォーマット】 ・メソッド
 formatToParts【フォーマットパーツ取得】

ES2015 (6) ⇒ ES2016 (7)
ES2015 Intl (2) ⇒ ES2016 Intl (3)

追加備考
式・演算子**【べき乗 演算子】
**=【べき乗代入 演算子】
Array【配列】オブジェクト
メソッド
・メソッド
includes【存在確認】
~Array【型指定配列ビュー (%TypedArray%)】オブジェクト
メソッド
・メソッド
 includes【存在確認】
Intl【国際化API名前空間】オブジェクト ・メソッド
 Intl.getCanonicalLocales【標準ロケール名取得】
変更備考
Date【日時】オブジェクト 日時文字列フォーマット
タイムゾーン オフセット省略時の解釈:
日付のみはUTC時刻、日付+時刻はローカル時刻

ES5.1 ⇒ ES2015 (6)
ES Intl (1) ⇒ ES2015 Intl (2)

追加備考
変数・データ型 const【定数定義】
let【局所変数定義】
Symbol型【シンボル型】
式・演算子 分割代入
yield
yield*
...【スプレッド演算子】
構文 テンプレートリテラル
2進数 (0b~・0B~)
8進数 (0o~・0O~)
for-of
コメント (<!--~)
関数 アロー関数 (=>)
デフォルト引数
可変長引数
複数値返却 (分割代入)
メソッド簡略構文
getter/setterの関連付け
クラスclass
標準組み込みオブジェクト ~Array【型指定配列ビュー (%TypedArray%)】
    実装:
    Int8Array【8ビット 符号あり整数】
    Uint8Array【8ビット 符号なし整数】
    Uint8ClampedArray【8ビット 符号なし整数】
    Int16Array【16ビット 符号あり整数】
    Uint16Array【16ビット 符号なし整数】
    Int32Array【32ビット 符号あり整数】
    Uint32Array【32ビット 符号なし整数】
    Float32Array【32ビット IEEE 浮動小数点】
    Float64Array【64ビット IEEE 浮動小数点】
ArrayBuffer【バイナリデータ配列】
DataView【データビュー】
Generator【ジェネレータ】
GeneratorFunction【ジェネレータファンクション】
Map【マップ】
Promise【非同期処理】
Proxy【プロキシ】
Reflect【反映】
Set【一意コレクション】
Symbol【シンボル】
WeakMap【弱参照マップ】
WeakSet【弱参照一意コレクション】
Array【配列】オブジェクト
プロパティ・メソッド
・プロパティ
[@@species]【コンストラクタ定義】
[@@unscopables]【with 除外プロパティ】
・メソッド
[@@iterator]【イテレータ取得】
copyWithin【内部コピー】
entries【イテレータ取得 (キー・値)】
fill【指定値設定】
find【値検索 (ユーザ関数)】
findIndex【インデックス検索 (ユーザ関数)】
from【配列生成 (オブジェクト指定)】
keys【イテレータ取得 (キー)】
of【配列生成 (要素指定)】
values【イテレータ取得 (値)】
Function【関数】オブジェクト
プロパティ・メソッド
・プロパティ
name【関数名】
・メソッド
[@@hasInstance]
Math【数学】オブジェクト
プロパティ・メソッド
・プロパティ
[@@toStringTag]【タグ】
・メソッド
acosh【ハイパボリックアークコサイン (逆双曲線余弦)】
asinh【ハイパボリックアークサイン (逆双曲線正弦)】
atanh【ハイパボリックアークタンジェント (逆双曲線正接)】
cbrt【立方根】
clz32【32ビットバイナリ先行0ビット数】
cosh【ハイパボリックコサイン (双曲線余弦)】
expm1【ex - 1】
fround【最も近い単精度浮動小数点形式数】
hypot【二乗和の平方根】
imul【符号付き32ビット整数乗算】
log1p【1 + 数値の自然対数】
log2【底2の対数】
log10【底10の対数】
sign【数値の符号】
sinh【ハイパボリックサイン (双曲線正弦)】
tanh【ハイパボリックタンジェント (双曲線正接)】
trunc【数値の整数部分】
Number【数値】オブジェクト
プロパティ・メソッド
・プロパティ
EPSILON【最小の数値差】
MAX_SAFE_INTEGER【正確な最大整数値】
MIN_SAFE_INTEGER【正確な最小整数値】
・メソッド
isFinite【有限数 判定】
isInteger【整数 判定】
isNaN【非数 判定】
isSafeInteger【正確な整数値 判定】
parseFloat【文字列→浮動小数点数 変換】
parseInt【文字列→整数値 変換】
Object【オブジェクト】オブジェクト
プロパティ・メソッド
・プロパティ
__proto__【内部プロトタイプ】
・メソッド
assign【プロパティ コピー】
getOwnPropertySymbols【シンボル プロパティ 取得】
is【同一判定】
setPrototypeOf【プロトタイプ設定】
RegExp【正規表現】オブジェクト
プロパティ・メソッド
・プロパティ
[ @@species ]【コンストラクタ定義】
flags【使用フラグ】
sticky【'y'(検索開始位置固定) フラグ使用有無】
unicode【'u'(Unicode) フラグ使用有無】
・メソッド
[ @@match ]【検索 (詳細)】
[ @@replace ]【置換】
[ @@search ] 【検索 (簡易)】
[ @@split ]【分割】
compile【コンパイル】
String【文字列】オブジェクト
プロパティ・メソッド
・メソッド
[@@iterator]【イテレータ取得】
codePointAt【指定位置のコードポイント値】
endsWith【終了文字列判定】
fromCodePoint【コードポイント値から文字列生成】
includes【部分文字列判定】
normalize【正規化】
raw【生の文字列取得】
repeat【文字列の繰り返し】
startsWith【開始文字列判定】
モジュール化import【インポート】
export【エクスポート】
変更備考
Date【日時】オブジェクト 日時文字列フォーマット
タイムゾーン オフセット省略時の解釈:
ローカル時刻