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

「大きな」オブジェクト\ライブラリ関数を追加し、それらをグローバルオブジェクトに追加しません。

貼り付けた 2 つのオプションは、次のような違いがあります。

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

変わりはない...


アップデート:

今、私はあなたの質問を理解しています。括弧はJavaScriptで新しいスコープを作成せず、関数のみを作成します。

于 2012-05-10T08:51:35.130 に答える
0

これは、自己実行関数と通常の関数を簡単に区別できるようにするための規則にすぎません。

于 2012-05-10T09:10:53.437 に答える