ちょうど私がクロージャーを理解したと思ったとき...
次のコード スニペット:
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 の最終値をどのように読んでいるのでしょうか?