JavaScriptのクロージャー

jsでクロージャーが理解できるとかなりできることが増えるらしいです。
教わってきたのでメモ代わりに。
 

クロージャーっていうのは関数を返す関数です。
下のコードは関数を叩くたび数字が+1されていきます。

function hoge(){
  var x = 0;  //関数hogeの中で変数xを定義
  return function(){
    x++;  //hogeを呼び出すたびにx++された処理を返す
    console.log(x);
  }
}
var x = hoge();
x(); //1
x(); //2
x(); //3

 

一回目だけtrueを返すとか、もできます。

function hoge() {
  var x = false;
  return function () {
    if (x) {
      console.log('false');
    } else {
      console.log('true');
    }
    x = true;
  }
}
var x=hoge();
x();  //true
x();  //false
x();  //false

Author