Skip to content

Instantly share code, notes, and snippets.

@typoerr
Created February 9, 2016 06:40
Show Gist options
  • Save typoerr/fc38e142ea414fab9e37 to your computer and use it in GitHub Desktop.
Save typoerr/fc38e142ea414fab9e37 to your computer and use it in GitHub Desktop.
Closure基礎
/*---------------------------------------------------------
* Closure
* ----------------------------------------------------------
* Closureは関数の閉じられたScopeの中でprivateな変数を定義すること
* 関数の中でのみ変数の更新を許可し、変数の状態を保持する
* */
function createCounter() {
// 外部からアクセスできない変数
var count = 0;
// countをIncrementした値を返す
// createCounterが呼び出される度にcountが更新され、
// 外部から影響を受けないprivateな値として値が保持される
return function () {
count++;
console.log(count);
}
}
// 関数が呼び出される度にcountを更新
var counter1 = createCounter();
counter1(); // 1
counter1(); // 2
counter1(); // 3
// 新しいcounterを作成
var counter2 = createCounter();
counter2(); // 1
counter2(); // 2
counter2(); // 3
// 外からの影響を受けない
count = 1000;
counter1();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment