本章节介绍一下使用setTimeout()来延迟循环导致异常简单介绍。

其实不能说异常,准确的说应该原本就是如此,只是比较让人迷惑而已。

先看一段代码实例:
   [ bootstrap ] 运行代码    下载代码
<script>
for(var index=0;index<10;index++){
  setTimeout(function(){
    console.log(index);
  },0);
}
</script>
上面的代码很多朋友可能第一眼看到的时候,认为会一次输出0-9,但是事实并非如此,而是输出的每一个都是10。

之所以这样是因为使用setTimeout()函数后,会产生异步操作,当for循环执行执行完毕后,index的值已经变为10,所以输出的每一个值都是10,下面代码修改如下:
   [ bootstrap ] 运行代码    下载代码
<script>
for(var index=0;index<10;index++){
  setTimeout((function(index){
    return function(){
      console.log(index);
    }
  })(index),0);
}
</script>

代码描述:setTimeout()函数延迟 循环语句异常。setTimeout()函数延迟循环语句异常简单介绍



155 206



用户评论
大牛,别默默的看了,快登录帮我点评一下吧!:)      登录 | 注册



×
×
51前端

注册

×
绑定手机

请绑定手机号,在继续操作

×
单次下载支付

应付金额:279

支付完成后,回到下载页面,在进行下载

官方QQ群
意见反馈
qq群

扫描上面二维码加微信群

官方QQ群

jQuery/js讨论群
群号:642649996
Css3+Html5讨论群
群号:322131262

加群请备注:从官网了解到