2012-04-25 11 views
8

this thread私は使用したいJavaScriptコードスニペットを見つけました。(function(global){...})(this);使い方

コードは次のようになります。

(function(global) { 
    // the function code comes here 
})(this); 

どのように私は、コードを実行するために、この関数を呼び出すことができますか?このglobal変数には何を渡す必要がありますか?

+0

を試してみてください。 –

答えて

16

この関数はすぐに実行されますが、関数を呼び出すと実行されません。

これは関数のリテラル定義であり、その関数が直ちに呼び出されるようにする2つの括弧が続きます。続きを読む:Immediately-Invoked Function Expression (IIFE)

あなたが配置するコードはすぐに実行されます。呼び出しparensに置かれたものはすべて引数として関数に渡されます。サンプルコードがグローバルスコープで定義されていると仮定すると、thiswindowオブジェクトであり、関数本体内でglobalと参照されています。これは、変数の衝突を避け、厳密なモードを強制するために、あなたのプログラムをカプセル化する素晴らしい方法です。

+1

ありがとうございます。ブログの投稿はとても役に立ちます! – BetaRide

+0

問題はありません。喜んで助けました。 – JAAulde

+1

ニース。この独特の構文がある意味で何を意味するのだろうと思った。 – dexter

1

コードを実行するにはどうすればよいですか?

それがすでに呼び出されている

(this)

私はこのグローバル変数の中に合格する必要がありますか?

this

14

この構築物は、関数を定義:

function(global) { 
    // the function code comes here 
} 

と直ちに、パラメータとしてthisを渡し、それを呼び出す:

([function])(this) 

識別子globalは単にの名前でありますこのパラメータは関数本体の中にあります。 `this`は(` this`が何であれ - - 文脈に依存するであろうこと)既に `はGlobal`パラメータの値として渡されている例えば、あなたは何を渡す必要はありません

console.log(this); // outputs something 
(function(global) { 
    console.log(global); // outputs the same thing as above 
})(this); 
+1

ありがとうございました。残念ながら私は2つの答えを受け入れることができません:-( – BetaRide