多くの 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()
どちらも同じ動作をし、関数定義自体がすべてのローカル変数を新しいスコープ内に配置します...では、なぜ余分なクロージャーが必要なのですか?