for循环中使用setTimeout的问题,进阶版

在知乎看到的一个题目,不明白为什么结果是123
for(vari=1;i<=4;i++){
vartime=setTimeout(function(i){
clearTimeout(time);
console.log(i);
},1000,i);
}
//输出结果1,2,3
守着星空守着你
浏览 347回答 2
2回答

湖上湖

打印一句console.log("cleartime:",time),你就明白了为什么最后一次4没有打印出来.for(vari=1;i

慕神8447489

这是因为for循环是同步的,而时间模块比如setTimeOut是异步的同步做完了异步可能还在处理中,所以出来的结果会先前于之前的操作,至于为什么不是1234是因为你每次清楚了下超时调用,不满足条件退出循环最后输出123
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript