我運行以下兩個代碼片段。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);
}