JavaScript - 自调用匿名函数是否足以保护变量免受全局命名空间的影响?

时间:2015-06-10 17:39:08

标签: javascript node.js

使用闭包更好地编写此代码吗?是否有更好的方法来编写它,或者该函数是否保护变量?

(function(){

    var http = require('http'),
        port = process.argv[2],
        string = "",
        length = 0; 

    http.get(port, function(res){

        res.on('data', function(data){
            length += data.length;
            string += data;
        });

        res.on('end', function(){
            console.log(length);
            console.log(string)
        });
    });

})();

1 个答案:

答案 0 :(得分:3)

这确实将变量保留在自身内,并且无法访问任何外部代码:

(function() {
  var so = '//stackoverflow.com';

  alert(so); will alert '//stackoverflow.com'
})();

alert(so); // Will alert Undefined **See note at bottom

Take a look at his post我通过快速谷歌搜索找到了

注意:如下面的评论中所述,这不会警告未定义,但实际上会引发参考错误,因为so在IIFE之外的范围内不存在。 Take a look at MDN了解更多信息!