やったー! 新しい実装方法みつけたよー!

今日見つけた何か。

var namespace = (function(){
  var i = 0;

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

変数を隠蔽する時に、よくこういう方法で隠蔽したんですが。
()で囲まれてる関数がnamespaceに格納されてるように見えてめっちゃメンテナンスしづらかったんですよね。

function(){
  return function(){
    return function(){
      return function(){};
    };
  };
}

おまけにこんな風にネストしまくると酷い酷い。

var namespace;

new function(){
  var i = 0;

  namespace = function(){
    return i++;
  };
}

こうすればnamespaceに直接関数が入るので誤読しないし、変数iは隠蔽されるし、おまけにネストが減って見やすくなる事に気づきました。