javascript 関数で関数を記述する次の方法を説明してください。
(function (){
// some code
})()
末尾の中かっこ「 () 」があるため、関数がすぐに実行されるという事実は理解していますが、中かっこで関数を囲むとはどういう意味ですか?
javascript 関数で関数を記述する次の方法を説明してください。
(function (){
// some code
})()
末尾の中かっこ「 () 」があるため、関数がすぐに実行されるという事実は理解していますが、中かっこで関数を囲むとはどういう意味ですか?
RobG が指摘したように、これは元の質問で唯一有効なステートメントの選択肢です。
(function (){
// some code
}())
これは解析された直後に実行され、関数内のコードを残りのコードから範囲外にする方法を提供します。これはクロージャーと呼ばれ ( MDN の Closures を参照) 、スクリプトでのメモリーリークの解決に役立つ場合があります。
構文が正しくありません。編集:修正。
一度だけ呼び出したい通常の関数定義を見てください。
function add(x,y) {
var z = x + y;
// do something with z
}
add(2,3);
このコードをすぐに実行できるように短縮できます。 addという名前を付ける必要はありません。
(function(x ,y) {
var z = x + y;
// do something with z
})(2,3)
呼び出し可能な式にするために、関数を括弧で囲んでいることに注意してください。このパターンは、特定の変数のクロージャーを作成する (状態をキャプチャする) ためによく使用されます。次に例を示します。
jQuery.noConflict(); //Disables the use of $ in the global scope
(function($) {
//Safely use $ inside this function
$('.link').click(function(e) {
//etc
});
})(jQuery);
コードをグループ化演算子で囲むと、関数宣言から関数式に変わります (名前はオプションであり、通常は省略されます)。そのパターンは、「即時に呼び出される関数式」(iife) または「即時に実行される関数式」(iefe) と呼ばれることがよくあります。
一度だけ呼び出される関数宣言を置き換えるために使用されます。これは、モジュール パターンの基本でもあります。