そのため、ECMAScript 5 には ECMAScript 3 との非互換性がいくつか導入されています。
例:
多くの 記事が書かれており、ES5 の厳密モードthis === null || this === undefined
で可能であると述べています。
"use strict";
(function () {
alert(this); // null
}).call(null);
しかし、標準 が実際に示唆しているのは、ES5 エンジンは非厳密モードでもこれを許可するということです。
15.3.4.3 ... thisArg 値がそのまま値として渡され
this
ます。これは第 3 版からの変更で、aundefined
またはnull
thisArg がグローバル オブジェクトに置き換えられ、ToObject が他のすべての値に適用され、その結果がthis
値として渡されます。
現在、ES5 をこのように実際に実装しているブラウザは IE9 だけであり、これにより現在のスクリプトが機能しなくなる可能性があることが判明しています。偉大な。
ES5 仕様の付録 E には、他にも多数の非互換性がリストされています。
では、十分に試行された ES3 スクリプトが問題なく動作し続けることを確認する最善の方法は何でしょうか? ある種の自動テストスイート?すべて手動でテストする必要がありますか?