我运行以下两个代码片段。javascript closure为什么我得到var undefined
当我为局部变量分配不同的名称时,第一个循环会给出预期的结果。
for(var i = 0; i < 3; i++) {
setTimeout((function() {
\t var i2 = i;//named i2 here
return function(){console.log(i2)};
})(), 10);
}
第二个循环将打印,而不是不确定的。我以为 var i =我会重新声明原来的i。我期望它提出一些数字。 我怎么在这里弄不明白?
for(var i = 0; i < 3; i++) {
setTimeout((function() {
\t var i = i;
console.log(i);
return function(){console.log(i)};
})(), 10);
}