Javascript - 为什么调用函数在闭包内定义?

时间:2012-05-10 08:49:28

标签: javascript global-object

我已经看到许多js框架(包括jquery)在其主要功能范围内使用闭包。例如,

var obj = (function(){
    return {
        test : function(){
            alert('test');
        }
    }
})();
obj.test()

jquery来源, http://code.jquery.com/jquery-1.7.2.js

是否需要额外的'关闭'围绕'功能'?或者如果我们使用它,那么差异是什么,

var obj = function(){
    return {
        test : function(){
            alert('test');
        }
    }
}();
obj.test()

两者都有相同的行为和函数定义本身将所有局部变量放在一个新的范围内...那么为什么额外的闭包呢?

2 个答案:

答案 0 :(得分:4)

它添加了“大”对象\库函数,而不是将它们添加到全局对象。

您粘贴的两个选项就像之间的区别:

var foo = (2);
var foo = 2;

没有区别......


<强>更新

现在我低估你的问题,括号不要在javascript中创建新的范围,只有函数。

答案 1 :(得分:0)

这只是一个能够轻松区分自执行功能和正常功能的惯例。