除了可读性之外,有没有理由避免或不使用这种风格编写静态变量?
function not_global()
{
var print;
(function() {
var static = value;
print = function(value) {
static = value;
}
})();
}
答案 0 :(得分:1)
我会避免这种风格。它不是很明确,所以如果没有评论就会说明print
在IIFE之外暴露是故意的,这很难。相反,我建议从函数中返回print
并将其分配到那里:
var print = (function()
{
var text_log=document.getElementById('text_log_text');
return function(string)
{
text_log.innerHTML+='<br />'+string;
};
})();
请注意,不鼓励污染全局命名空间,所以这里真正最好的答案就是不要让print
暴露在外面。这个答案假设您已经考虑过,并且您的IIFE实际上嵌套在另一个函数中(因此它不会污染全局命名空间),或者您确实希望print
是全局的。