Annex E (informative) ECMAScript 2015 における修正と明確化(互換性へ影響し得るもの)

9.1.1.4.14-9.1.1.4.17: 第 5 / 5.1 版では新しいグローバル宣言に対応するグローバルオブジェクトプロパティが既に存在するかをプロパティ存在テストで判定していた。ECMAScript 2015 では独自 (own) プロパティ存在テストを使用する。これは多くの Web ブラウザ実装で一般的な挙動に対応する。

10.4.2.1: 第 5 版は配列インデックスまたは新しい長さ値の整数変換前に現在の配列長を捕捉するよう移動した。しかし変換過程が配列長を変化させ得る副作用を持つ場合、その捕捉値は無効になり得た。ECMAScript 2015 はそのような副作用が起こり得た後で現在の配列長を捕捉しなければならないと規定する。

21.4.1.31: 以前の版では TimeClip 抽象操作は 0 時刻を +0𝔽-0𝔽 いずれかで表現してよかった。ECMAScript 2015 は常に +0𝔽 を返すと規定する。つまり Date の時刻値が観測可能に -0𝔽 となることはなく、時刻値を返すメソッドも -0𝔽 を返さない。

21.4.1.32: UTC オフセット表現が存在しない場合、ローカルタイムゾーンが使用される。第 5.1 版は誤って欠如するタイムゾーンを "z" と解釈すべきと述べていた。

21.4.4.36: 年が 21.4.1.32 で規定される Date Time String Format で表現できない場合 RangeError 例外を投げる。以前の版はそのケースを規定していなかった。

21.4.4.41: 以前の版は time value が NaN のとき Date.prototype.toString が返す値を規定していなかった。ECMAScript 2015 は結果を文字列 "Invalid Date" と規定する。

22.2.4.1, 22.2.6.13.1: RegExp インスタンスの "source" プロパティ値内の LineTerminator コードポイントはエスケープシーケンスで表現されなければならない。第 5.1 版は / のエスケープのみ要求していた。

22.2.6.8, 22.2.6.11: 以前の版で String.prototype.matchString.prototype.replace の仕様は global フラグを持つ RegExp 値をパターン引数にした場合の挙動が不正確であった。以前の仕様は各マッチ試行で lastIndex が変化しなければ 1 増やすべきと述べたが、正しい挙動は空文字列にマッチした場合のみ 1 増やすことである。

23.1.3.30: 以前の版は _comparator_NaN を返した場合の Array.prototype.sort の解釈を規定していなかった。ECMAScript 2015 はその値を +0𝔽 が返されたかのように扱うと規定する。また 2015 版は _comparator_ の結果に ToNumber を適用する。以前は Number でない結果の効果は実装依存であり、実際には実装は ToNumber を呼び出していた。