就在我以为我理解闭包的时候......
以下代码片段:
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,所以应该有三个x:x0=0,x1=1。x2=2。他们都是如何读取 i 的最终值的?