2012-03-19 5 views
1

可能性の重複:
What does this “(function(){});”, a function inside brackets, mean in javascript?
javascript anonymous function私はこのjavascript関数のパターンについて知りたい

(関数())()

これは、多くのjsで使用されていますライブラリのようなjquery、YUi

+0

参照[javascriptの匿名関数](http://stackoverflow.com/questions/7779818/javascript-anonymous-function) –

+0

あなたは自分が同様に無名関数を呼び出す見たいと思うかもしれません –

答えて

1

これは匿名の自己実行機能です。それは命名されておらず、自己実行型であるため、匿名で実行されます(命名されていない関数を実行する他の方法はありません)。

グローバルな名前空間への変数漏洩を防ぐクロージャとして機能するため、控えめなコードモジュールを囲むことは特に便利です。

+0

は、この関数がページが完全に読み込まれた後に呼び出されることを意味しますか? –

+1

いいえ、すぐに実行されます。これは、ページがロードされた後に実行されるjQuery(または他のツール)で使用される形式に似ています。また、jQueryプラグインはそのパターンを使用してモジュールをカプセル化します。 –

0

特定のパラメータで即座に匿名関数を呼び出しています。

例:jQueryのの場合

(function(name){ alert(name); })('peter') This alerts "peter". 

あなたは、パラメータとしてのjQueryを渡し、あなたの関数で$を使用する場合があります。だから、あなたはまだnoConflictモードでのjQueryを使用していますが、便利な$使用することができます。

jQuery.noConflict() (function($){ var obj = $('<div/>', { id: 'someId' }); })(jQuery) 
+0

私の最後の行を説明してください –

4

を私は何(function())()手段わからないんだけど、私はあなたが(function() { … })()を意味前提に動作します。

f = function() { … }; // Define a function. 
f();     // Call it. 

唯一の違いは、変数を必要とせずにそうすることです。

5

これは、Module Patternと呼ばれています。アイデアはカプセル化されたモジュールを持つことで、あなたや他の誰かが作成した他のモジュールと衝突することはありません。そのモジュール内で公開メソッドと非公開メソッドを作成できます。 参照:Js Pattern

+0

また、 (ウィンドウ・グローバル・オブジェクトにオブジェクトを追加することによってデータが取り込まれていない限り)グローバル変数空間にトレースを残すことなく、すぐに内部の内容を実行します。 –

0

単純にカッコで囲まれたコードを実行します(最初のブロックは関数を返し、2番目のペアはそれを実行します)。例えば

テイクこれら二つのスニペット:あなたは(FOOを呼び出すまで

function foo() { 
    print 'foo'; 
} 

(function() { 
    print 'foo'; 
})(); 

は、最初は何もしません)。一方、第2はすぐに 'foo'を表示します。

関連する問題