码迷,mamicode.com
首页 > 其他好文 > 详细

闭包,定时器,循环

时间:2017-06-29 11:17:49      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:作用   out   实现   i++   class   for循环   span   for   size   

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)
}

这样你就会发现效果实现了,每隔两秒出现一个数字

闭包,定时器,循环

标签:作用   out   实现   i++   class   for循环   span   for   size   

原文地址:http://www.cnblogs.com/whybxy/p/7093124.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!