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

即時関数 (function(){})()

即時関数とは?

「関数定義」「関数呼び出し」を同時に行う。

(function foo(){ alert(1); })()

ここではfooという関数名で定義してるが、無名関数でも良い。

(function (){ alert(1); })()

即時関数のメリット

グローバルスコープを汚さない

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で、グローバルを汚されてない

即時関数内の変数はスコープが局所化される

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

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


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

Last-modified: 2011-12-19 (月) 18:17:57 (2166d)