クロージャー

by tsureishi

JavaScript

// クロージャー
// 関数呼び出し時点における変数名解決の環境を保持した関数
// 井上誠一郎, 土江拓郎, 浜辺将太著『パーフェクト JavaScript』(p177)
var count = 0;
function foo() {
    return count++;
}
function bar() {
    var count = 0;
    return function() {
        return count++;
    }
}
console.log(foo()); // 0
console.log(foo()); // 1
// closure1, clousure2は異なる振る舞いを実現
var closure1 = bar();
var closure2 = bar();
console.log(closure1()); // 0
console.log(closure1()); // 1
console.log(closure2()); // 0
console.log(closure2()); // 1
console.log(closure1()); // 2
console.log(closure2()); // 2