我轶事地注意到,这种现象use strict
似乎更常见:
(function() {
'use strict';
...
比这个:
'use strict';
(function() {
...
该香草JS实现TodoMVC的做到这一点,例如。
是否有一个原因?
编辑:我知道整个文件与功能块的区别。TodoMVC是一个很好的例子,它说明了为什么这个位置对我来说很奇怪,因为它不依赖任何外部库,因此整个“与非严格第三方玩得很好”在这里并不适用。
在local
范围内声明它将强制功能块strict-mode
被浏览器考虑。
您可以non-strict
观察除IIFE
内部IIFE
:
(function() {
"use strict";
a = 100;
})();
b = 200;
对于整个脚本:
"use strict";
(function() {
try {
a = 100;
} catch (e) {
console.log(e + '');
}
})();
b = 200;
正如docs中突出显示的那样,
如果您
strict
对整个脚本使用模式,则不可能盲目地将不冲突的脚本串联在一起。考虑将严格模式脚本与非严格模式脚本串联:整个串联看起来很严格!反之亦然:非严格加上严格看起来非严格。严格模式脚本之间的串联是可以的,非严格模式脚本之间的串联是可以的。仅连接严格和非严格的脚本是有问题的。因此,建议您逐个功能启用严格模式(至少在过渡期间)。您还可以采用将脚本的全部内容包装在一个函数中并使该外部函数使用严格模式的方法。这消除了连接问题,但是这意味着您必须显式导出函数范围之外的所有全局变量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句