即時関数

JavaScriptには即時関数というものがある。その名のとおり即実行される関数のことである。
通常は、次のように定義されている関数を呼び出して利用しているが、

function siken() { 
  alert('呼び出されて実行される');
}
siken();    /* 関数の呼び出し */

即時関数は関数定義と呼び出しをひとまとめで行ってくれる。(他に利用させない)

(function() { 
  alert('呼び出しを明示しなくても、即実行される');
})();

jQueryでは次のように即時関数を使っていることが多い。

(function($){ 
         ・
         ・
         ・

})(jQuery);

この即時関数、再呼び出しが出来ないので一見すると不便そうだが次の利点がある。

  • ページのonLoad処理や各種初期化処理はそもそも複数回呼び出す必要はない場合、簡潔に表現できる。
  • 再利用しないものに対して名前をつけると他の処理(他の人が作ったライブラリとか)と名前が衝突する危険を回避できる。

自分で作った専用のスクリプトなら、このテクニックは必ずしも必要ではないが、共通ライブラリなど、他の処理と干渉させてはいけないプログラムを作る場合には必須となる手法である。