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

2011-08-10
かなり古い記事です。現在も有効な内容であるかどうか分かりませんのでご注意ください。

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

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

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

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

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

参考

Profile

フルスタック気味のフリーランスプログラマー。

どちらかと言うと得意はインフラ構築とサーバーサイドプログラミングですが、フロントエンドもぼちぼちやっています。

最近の興味範囲はWordPress、AWS、サーバーレス、UIデザイン。

愛車はセロー。カメラはペンタックス。旅好きです。横浜在住。