for(var i = 0;i < 3;i++){
setTimeout(function(){
console.log(i);
},0);
console.log(i);
}为什么是输出的012333我感觉应该是012222为什么还要加一?这个点没理解
1 回答
已采纳
winner4265975
TA贡献19条经验 获得超17个赞
大炮兄谢谢你上回回答我的问题。这个问题我说下自己的理解,首先for循环是瞬间完成的所以先执行console.log(i),此时输出012,然后执行这里的setTimeout运行3次此时循环已经结束所以i的值肯定是3所以输出333!
如果你想每隔一秒输出一下,并且是0,1,2的话就要用闭包了同时输出time改为0;当然你设置一个全局变量也可以;
//闭包方法 for(var i=0;i<3;i++){ (function(num){ setTimeout(function(){ console.log(num); },num*1000)})(i) }
添加回答
举报
0/150
提交
取消