Javascript static var

时间:2014-01-31 00:15:02

标签: javascript

除了可读性之外,有没有理由避免或不使用这种风格编写静态变量?

function not_global()
{
    var print;

    (function() {
        var static = value;
        print = function(value) {
            static = value;
        }
    })();
}

1 个答案:

答案 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是全局的。