严格模式编译指示在ECMAScript5中有什么范围?
"use strict";
Run Code Online (Sandbox Code Playgroud)
我想这样做(主要是因为JSLint没有抱怨它):
"use strict";
(function () {
// my stuff here...
}());
Run Code Online (Sandbox Code Playgroud)
但我不确定这是否会破坏其他代码.我知道我可以做到这一点,这将把pragma的范围扩展到函数...
(function () {
"use strict";
// my stuff here...
}());
Run Code Online (Sandbox Code Playgroud)
但JSLint抱怨它(当启用"严格"JSLint选项时),因为它认为您在启用"use strict"之前正在执行代码.
这是我的问题.如果我有fileA.js:
"use strict";
// do some stuff
Run Code Online (Sandbox Code Playgroud)
和fileB.js:
eval( somecodesnippet ); // disallowed by "use strict"
Run Code Online (Sandbox Code Playgroud)
然后将它们以相同的顺序包含在我的html页面中,将pragma限定为文件,还是将pragma放到fileB中,从而阻止eval执行?
例如,我有这样的代码:
function test() {
// some code
}
function main() {
"use strict";
test();
}
Run Code Online (Sandbox Code Playgroud)
如您所见 - 在功能中main我启用了严格模式.
问题:这是否在功能中启用严格模式test或者我需要分别为每个功能定义严格模式?
谢谢.