* 即時関数 (function(){})() [#rf1dd967]

** 即時関数とは? [#a439aabf]
「関数定義」「関数呼び出し」を同時に行う。
 (function foo(){ alert(1); })()
ここではfooという関数名で定義してるが、無名関数でも良い。
 (function (){ alert(1); })()

** 即時関数のメリット [#gb0a5ba3]

*** グローバルスコープを汚さない [#ieaae04f]

 function foo(){ alert(1); }
 var foo = 100;
 alert(foo); // =>「100」

数値のfooが関数のfooを上書きする

 function bar(){ alert(1); }
 alert(window.bar);  // =>「function bar(){ alert(1); }」

barでグローバルオブジェクトwindowを汚している

 (function baz(){ alert(1); })()
 alert(window.baz); // => 「undefined」

bazはundefinedでグローバルを汚されてない
bazはundefinedで、グローバルを汚されてない

*** 即時関数内の変数はスコープが局所化される [#f46742b1]

 var foo = 1;
 (function (){ var foo = 100; alert(foo); })(); // => 「100」
 alert(foo); // => 「1」

即時関数内のfooは関数内で局所化されており、グローバルスコープのfooと衝突しない。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS