無名関数を定義して即実行する

JavaScriptのライブラリのコードを読んでいるとよく以下のようなコードを見かける。

(function() {
  var hoge = {};
  hoge.a = function(){
    //...
  }
  //...
})();

定義した無名関数を末尾の「()」で実行しているというわけだ。代わりに「.call()」にしているものも見かける。

無名関数の関数スコープを使うことでグローバルコンテキストを汚すことを気にせずに、好きなように変数が使える。
クロージャのおかげで残したいものはグローバルコンテキストに渡して残せる。

割と昔からあるテクニックみたいだけど、にわかJavaScripter的にはなるほどと思ったのでメモ。

参考