setTimeout()在javascript中如何知道多少次循环内的for循环?



for (var index = 1; index <= 3; index++) {
setTimeout(function() {
console.log('after ' + index + ' second(s):' + index);
}, index * 1000);
}

output:
after 4 second(s):4
after 4 second(s):4
after 4 second(s):4
after 4 second(s):4

我明白使用"让"而不是"var"解决了这个问题,但我的问题是,在世界上setTimeout函数内部的回调函数知道运行4次给定setTimeout的执行开始循环完成后?

这是一个更有针对性的问题,试图通过后续问题更好地理解问题。我不明白setTimeout函数是如何知道回调函数运行多少次的。

只要在setTimeout之外添加一个console.log(),你就会发现原因了

for (var index = 1; index <= 3; index++) {
// it will execute this line 3 times,then begin to invoke console.log inside setTimeout
console.log("before: " + index) 
setTimeout(function () {
console.log('after ' + index + ' second(s):' + index);
}, index * 1000);
}

相关内容

  • 没有找到相关文章

最新更新