Javascript 如何将循环中的迭代添加到事件队列?
一段时间以来,我一直在努力理解以下代码:Javascript 如何将循环中的迭代添加到事件队列?,javascript,Javascript,一段时间以来,我一直在努力理解以下代码: for (var i = 0; i < 5; i++) { setTimeout(function() { console.log(i); }); } 但我只是想澄清我对JavaScript中事件循环工作原理的理解 是不是每次迭代都会在setTimeout运行之前在事件循环中创建一个事件 我知道默认情况下,setTimeout函数使用0作为其millides值,但它只保证将该方法添加到事件队列的最短时间 迭代是否在
for (var i = 0; i < 5; i++) {
setTimeout(function() {
console.log(i);
});
}
但我只是想澄清我对JavaScript中事件循环工作原理的理解
是不是每次迭代都会在setTimeout
运行之前在事件循环中创建一个事件
我知道默认情况下,setTimeout
函数使用0
作为其millides
值,但它只保证将该方法添加到事件队列的最短时间
迭代是否在setTimeout
启动之前添加到事件队列
[0] => [1] => [2] => [3] => [4] => [console.log]
谢谢事件队列中的每条消息都对应一个函数。通过
setTimeout
添加到队列中的函数只有在主函数完成后才会触发
例如:
for(变量i=0;i<5;i++){
setTimeout(函数(){
控制台日志(i);
});
}
console.log('test')
看看这个视频:事件队列在这里并不重要。您可以存储函数,在循环之后直接调用它们,并获得相同的结果。请参阅复制链接。
[0] => [1] => [2] => [3] => [4] => [console.log]