for-循环中的setTimeout不打印连续值我有一个剧本:for (var i = 1; i <= 2; i++) {
setTimeout(function() { alert(i) }, 100);}但3两次都发出警报,而不是1然后2.有没有办法通过i,而不将函数写入字符串?
3 回答
LEATH
TA贡献1936条经验 获得超6个赞
这个 超时
函数回调在循环完成后都运行良好。事实上,作为计时器,即使每次迭代都是setTimeout(.,0),所有这些函数回调仍将在循环完成后严格运行,这就是为什么3被反映出来的原因! 所有这两个函数,尽管它们是在每个循环迭代中分别定义的,但在 相同的共享全局范围
事实上,只有一个我在里面。
for (var i = 1; i <= 2; i++) { (function(){ var j = i; setTimeout(function() { console.log(j) }, 100); })();}
for (var i = 1; i <= 2; i++) { (function(i){ setTimeout(function() { console.log(i) }, 100); })(i);}
添加回答
举报
0/150
提交
取消