我已经尝试理解下面这段代码有一段时间了:
for (var i = 0; i < 5; i++) {
setTimeout(function() {
console.log(i);
});
}
我有一个想法,为什么它会产生输出:
5
5
5
5
5
我只是想澄清一下我对JavaScript中事件循环是如何工作的理解。
是不是每次迭代都会在setTimeout
运行之前在事件循环中创建一个事件?
我知道在默认情况下,setTimeout
函数使用0
作为其milliseconds
值,但它只保证将该方法添加到事件队列的最短时间。
迭代是否在setTimeout
之前添加到事件队列中?
[0] => [1] => [2] => [3] => [4] => [console.log]
谢谢
https://stackoverflow.com/questions/51922031
复制相似问题