除了可读性之外,还有什么理由避免或不使用这种风格对静态变量进行编程?
function not_global()
{
var print;
(function() {
var static = value;
print = function(value) {
static = value;
}
})();
}
最佳答案
我会避免这种风格。它不是很明确,因此如果没有注释就很难判断 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
是全局的。
关于JavaScript 静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21470269/