0

我见过许多 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()

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

4

2 回答 2

4

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

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

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

没有不同...


更新:

现在我了解您的问题,括号不会在 javascript 中创建新范围,只会创建函数。

于 2012-05-10T08:51:35.130 回答
0

这只是一种能够轻松区分自执行函数和普通函数的约定。

于 2012-05-10T09:10:53.437 回答