使用自调用函数来包装严格模式兼容代码(通常称为严格模式编译指示)被认为是一种很好的做法:
(function(){
"use strict";
// Strict code here
}());
我的问题是在这种情况下如何声明全局变量?我今天知道的三种替代方案:
替代方案 1:
var GLOB = {};
(function(){
"use strict";
}());
替代方案 2:
(function(){
"use strict";
window.GLOB = {};
}());
替代方案 3:
(function(win){
"use strict";
win.GLOB = {};
}(window));
有什么偏好和动机吗?其他选择?
IMO 替代方案 3 是最好的。但它假设window
代表全局范围 - 对于浏览器来说是这样,但对于其他 JS 环境(命令行、Node.js 等)则不然。
以下内容将全面发挥作用:
(function(globals){
"use strict";
globals.GLOB = {};
}(this));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)