Annex E (informative) 互換性に影響する可能性のある ECMAScript 2015 における訂正および明確化

9.1.1.4.14-9.1.1.4.17 Edition 5 および 5.1 では、新しいグローバル宣言に対応するグローバルオブジェクトプロパティが既に存在するかどうかを判断するために、プロパティ存在テストを使用していた。ECMAScript 2015 は own property 存在テストを使用する。これは、web ブラウザーで最も一般的に実装されてきたものに対応する。

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

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

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

21.4.4.36:年を 21.4.1.32 で指定される Date Time String Format を使用して表現できない場合、RangeError 例外が投げられる。以前の版では、その場合の振る舞いを指定していなかった。

21.4.4.41:以前の版では、時刻値NaN であるときに Date.prototype.toString が返す値を指定していなかった。ECMAScript 2015 は、結果を String 値 "Invalid Date" と指定する。

22.2.4.1, 22.2.6.13.1:RegExp インスタンスの "source" プロパティの値内にある任意の LineTerminator コードポイントは、エスケープシーケンスを使用して表現されなければならない。Edition 5.1 は / のエスケープのみを要求していた。

22.2.6.8, 22.2.6.11:以前の版では、パターン引数が global フラグの設定された RegExp 値である場合について、String.prototype.match および String.prototype.replace の仕様が誤っていた。以前の仕様では、パターンの各マッチ試行について、lastIndex が変化しなかった場合、1 増加すべきであると述べていた。正しい振る舞いは、パターンが空の String にマッチした場合に限り、lastIndex が 1 増加すべきであるというものである。

23.1.3.30:以前の版では、comparator によって返された NaN 値が Array.prototype.sort によってどのように解釈されるかを指定していなかった。ECMAScript 2015 は、そのような値は comparator から +0𝔽 が返されたかのように扱われると指定する。ECMAScript 2015 はまた、comparator によって返された結果に ToNumber が適用されることも指定する。以前の版では、Number 値でない comparator 結果の効果は実装定義であった。実際には、実装は ToNumber を呼び出している。