为了账号安全,请及时绑定邮箱和手机立即绑定

settimeout

settimeout

西兰花伟大炮 2017-03-26 15:01:48
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)
         }


查看完整回答
反对 回复 2017-03-26
  • 1 回答
  • 0 关注
  • 1154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信