Итак, ECMAScript 5 вводит некоторые несовместимости с ECMAScript 3.
Пример :
Многие статьи содержат было написано, что this === null || this === undefined
возможно в строгом режиме ES5 :
"use strict";
(function () {
alert(this); // null
}).call(null);
Но,
...
Значение thisArg передается без изменений как значение this
. Это изменение по сравнению с Редакцией 3, где undefined
или null
thisArg заменяется глобальным объектом, а ToObject применяется ко всем другим значениям, и этот результат передается как это
значение.
В настоящее время IE9 - единственный браузер, который действительно реализует ES5 таким образом, и оказывается, что это может нарушить работу текущих скриптов . Отлично.
В приложении E спецификации ES5 перечислены десятки других несовместимостей.
Ну и что? лучший способ убедиться, что наши проверенные сценарии ES3 будут продолжать работать безупречно? Какой-то автоматизированный набор тестов? Придется ли нам все это тестировать вручную?