猿问

settimeout

for(var i = 0;i < 3;i++){
                setTimeout(function(){
                    console.log(i);
                },0);
                console.log(i);
            }

为什么是输出的012333

我感觉应该是012222

为什么还要加一?这个点没理解

西兰花伟大炮
浏览 1155回答 1
1回答

winner4265975

大炮兄谢谢你上回回答我的问题。这个问题我说下自己的理解,首先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)          }
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答