1

ちょうど私がクロージャーを理解したと思ったとき...

次のコード スニペット:

function f() {
    var a = [];
    var i;
    for (i = 0; i < 3; i++) {
        a[i] = function () {
            var x = i;
            return x;
        }
    }
    return a;
}

var a = f();
console.log(a[0]());
console.log(a[1]());
console.log(a[2]());

3, 3, 3 と出力されます。理由がわかりません。「i」の値をローカル変数 x にコピーしているので、x0=0、x1=1 の 3 つの x があるはずです。x2=2。それらはすべて i の最終値をどのように読んでいるのでしょうか?

4

2 に答える 2