首页 > 代码库 > 闭包,定时器,循环
闭包,定时器,循环
1.对于一个一般的循环,顺序输出01234
for(var i=0;i<5;i++){ console.log(i) }
2.如果加上定时器,实现每隔两秒出现一个数字
for(var i=0;i<5;i++){ setTimeout(function(){ console.log(i);//5个4 },2000) }
你会发现出现了5个4,并且还是一起出的,原因是定时器是异步函数,外部函数执行的很快,等执行定时器时for循环已经执行完毕,i等于4,我们可以这样改
for(var i=0;i<5;i++){ (function(){ setTimeout(function(x){ console.log(x);//01234 },2000) })(i) }
你又会发现,现在是出现01234,但是感觉定时器没起作用,两秒后01234一起出现,我们可以这样改
for(var i=0;i<5;i++){ (function(){ setTimeout(function(x){ console.log(x);//01234 },x*2000) })(i) }
这样你就会发现效果实现了,每隔两秒出现一个数字
闭包,定时器,循环
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。