所以 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
值传递。
目前,IE9 是唯一真正以这种方式实现 ES5 的浏览器,事实证明这可能会破坏当前的脚本。伟大的。
ES5 规范的 Annix E列出了许多其他不兼容性。
那么,确保我们久经考验的 ES3 脚本能够继续完美运行的最佳方法是什么?某种自动化测试套件?我们必须手动测试吗?