我正在启动一个新的 javascript 应用程序并想使用严格模式。但是,我们仍然需要支持一些不支持严格模式的旧浏览器(IE8,9)。我的一些同事担心严格模式带来的运行时语义变化——他们担心在旧浏览器上以宽松模式运行时严格函数的行为会有所不同。
我可以添加一组额外的限制来确保函数在宽松模式下与严格模式下具有相同的运行时语义吗?具体来说,我想要一组规则,我可以使用自动化的类似 lint 的工具进行检查。我的第一个想法是防止人们使用eval
or arguments
。这样就够了吗?
CoffeeScript 中的编码有助于实现这一目标吗?
例如,考虑以下函数:
(function(){
'use strict';
function foo(bar) {
arguments[0] = 'You are in lax mode';
alert(bar);
}
foo('You are in strict mode');
})();
此函数在严格模式下正常运行,但在宽松模式下具有不同的行为。我正在寻找一套规则,以确保人们不会意外地这样做。