このページはECMAScript® 2020 Language SpecificationD Corrections and Clarifications in ECMAScript 2015 with Possible Compatibility Impact章をJavaScriptの学習目的で私的に日本語訳したものであり、直訳と意訳および推測が混在しています。そのため内容については正確ではない可能性があります。正確な情報を知りたい場合は、原文をご覧ください。また一部訳者によるコメントが含まれていることがあります。※このサイトの内容で損害や不利益を受けたとしても当方は一切の責任を負いません。

8.1.1.4.158.1.1.4.18: 第5版および第5.1版は、プロパティ存在テストを使用して、新しいグローバル宣言に対応するグローバルオブジェクトプロパティがすでに存在するかどうかを判断しました。 ECMAScript 2015は、独自のプロパティ存在テストを使用します。 これは、Webブラウザによって最も一般的に実装されているものに対応しています。

9.4.2.1:第5版では、配列インデックスまたは新しい長さの値を整数変換する前に、現在の配列の長さのキャプチャを移動しました。 ただし、変換プロセスで配列の長さを変更する場合、キャプチャされた長さの値が無効になる可能性があります。 このような副作用が発生する可能性がある場合に、ECMAScript2015では、現在の配列の長さのキャプチャを指定しています。

20.4.1.14:以前の版では、TimeClip抽象演算が0時間値の表現として+0または-0のいずれかを返すことが許可されていました。 ECMAScript 2015は、+0が常に返されます。 ECMAScript2015は、Dateオブジェクトの時間値が実質的に-0になることはなく、そのため時間値を返すメソッドが-0を返すことがありません。

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

20.4.4.3620.4.1.15で指定された日時文字列形式を使用して年を表すことができない場合、RangeError例外がスローされます。 以前のエディションでは、その場合の動作は指定されていませんでした。

20.4.4.41:以前の版では、thisの時刻値NaNの場合にDate.prototype.toStringによって返される値が指定されていませんでした。 ECMAScript2015は、結果を文字列値"Invalid Date"と指定しています。

21.2.3.121.2.3.2.4:RegExpインスタンスの"source"プロパティの値にあるLineTerminatorコードポイントは、エスケープシーケンスを使用して表現する必要があります。 第5.1版では、/のエスケープのみでした。

21.2.5.721.2.5.10:以前の版では、パターン引数がglobalフラグを指定したRegExp値である場合、String.prototype.matchおよびString.prototype.replaceの仕様が正しくありませんでした。 以前の仕様では、パターンを一致させようとするたびに、lastIndexが変更されなかった場合は、1ずつインクリメントする必要があると述べていました。正しい動作では、パターンが空の文字列と一致した場合にのみ、lastIndexを1つインクリメントする必要があります。

22.1.3.2722.1.3.27.1:以前の版では、comparefnによって返されるNaN値がArray.prototype.sortによってどのように解釈されるかが指定されていませんでした。 ECMAScript2015は、NaN値をcomparefnから+0が返されたかのように扱うことを指定しています。 ECMAScript2015は、comparefnによって返される結果にToNumberが適用されることも指定しています。 以前の版は、数値ではないcomparefn結果の扱いは実装に依存していました。 実際には、実装はToNumberを呼び出しています。