代码如下:
for (var i = 0; i < 5; i++) {
setTimeout(function() { console.log(i); }, 1000);
}
console.log(i);
输出结果是5,5,5,5,5,5
回答
云松回答
问题分析:
1、你用的是for循环。里面有个i++,每次循环一次i就加一次。当循环到第五次的时候也就是显示4的时候后,仍然会加一次i。所以循环结束最后i=5。
2、setTimeout的机制是异步执行。所以for循环的时候根本不会等setTimeout执行完了,再循环,而是一口气把i的数字加到5。然而循环中的setTimeout语句会被排入内存中排序,等到时间到了,再执行setTimeout。当setTimeout执行时,i的值就是5了。
问题解答:
所以定时器输出的都是for循环结束后的值,都是5。
(0)
相似问题