2012-05-10 31 views
0

私は、主要な関数スコープの周りにクロージャを使って多くのjsフレームワーク(jqueryを含む)を見てきました。例えば、Javascript - closour内で定義された関数を呼び出す理由

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つのコードは同等です。 –

+0

あなたは "かっこ"を意味し、 "閉鎖"を意味するようには思われません。 – Ashe

+0

http://stackoverflow.com/questions/6645766/why-are-parenthesis-used-to-wrap-a-javascript-function-call –

答えて

4

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

あなたが貼り付けられた二つの選択肢はただの違いのようなものです:

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

は違い...


更新:

今、私はあなたの質問をundersatnd 、かっこは作成しませんjavascriptの新しいスコープ、機能のみ。

+0

@gdoron私は彼がなぜ 'var obj = { test :function(){ alert( 'test'); } }; ' – xdazz

+0

ありがとう、それは助け:) –

0

これは、自己実行機能を通常の機能と簡単に区別できるようにするための慣例に過ぎません。

関連する問題