10

このスレッドで、使用したい JavaScript コード スニペットを見つけました。

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

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

この関数を呼び出してコードを実行するにはどうすればよいですか? globalこの変数には何を渡す必要がありますか?

4

3 に答える 3

19

関数はすぐに実行されます。呼び出して実行するのではありません。

これは関数リテラル定義であり、その後にその関数をすぐに呼び出す 2 つの括弧が続きます。続きを読む:即時呼び出し関数式 (IIFE)

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

于 2012-04-25T11:45:41.303 に答える
16

この構成体は関数を定義します:

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

すぐに呼び出して、thisパラメーターとして渡します。

([function])(this)

識別子globalは、関数本体内のこのパラメーターの名前です。たとえば、試してみてください

console.log(this); // outputs something
(function(global) {
    console.log(global); // outputs the same thing as above
})(this);
于 2012-04-25T11:47:03.333 に答える
1

この関数を呼び出してコードを実行するにはどうすればよいですか?

すでに呼び出されています:(this)

このグローバル変数には何を渡す必要がありますか?

this

于 2012-04-25T11:46:08.877 に答える