(擬似)スタティック変数を持つ関数を定義する

Cとか(たぶんVBでもあったはず...)で、よく関数にスタティック変数を持たせて、その関数が呼び出される毎に値をカウントさせたり、処理結果をキャッシュさせたりということをやる。

同じことを Javascript でやりたい場合、以下のようなイディオムが使える。

var myCounter = (function() {
  /* static */ var counter = 0;

  return function() {
    return ++counter;
  }
})();

そうすると、myCounter() 関数を呼び出すごとに 1, 2, 3, ... という風に戻り値がカウントアップされる。