素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

クロージャの続き

まだよくわかってないんだけど、グローバル空間を汚染せずに、関数を実行するたびに上書きされない変数を作れるもの?なのかな。

たとえば、f()するたびにreturnされる値が一ずつ増えるものを作るとき。

var i=0;
function f(){
return i++;
}
f();
f();

ダサい。

function f(){
this.i=this.i+1||0
return this.i;
}
f();
f();

まだまし。

function func(){
  var i = 0;
  
  return function(){
    return i++;
  }
}
var f=func();
f();
f();

var f=func()とかださい。

var f=(function(){
var i=0;
return function(){
return i++;
}
})()
f();
f();

めでたしめでたし。

っていう使い方?よくわからないな、難しい。