因此,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版变化过来的,第3版中,undefined
或null
的thisArg会被替换为全局对象,并且ToObject会应用于所有其他值,该结果将作为this
值传递。
目前,IE9是唯一实际按照ES5实现的浏览器,结果发现这可能会破坏当前脚本。太好了。
ES5规范的Annix E列出了许多其他不兼容性。
那么,确保我们经过充分测试的ES3脚本继续无故障运行的最佳方法是什么?某种自动化测试套件?还是我们必须手动测试所有内容?