setTimeout 函数的使用 (前端学习 第四节)

转载 目录:

http://www.cnblogs.com/destinyruru/p/5823760.html

http://www.qdfuns.com/notes/17398/e8a1ce8f863e8b5abb530069b388a158/page/3.html#tagsbar

etTimeout是定时器,这个自行去了解,我想说的是这个0ms是咋回事

根据http://www.cnblogs.com/fullhouse/archive/2012/10/10/2718542.html这篇文章的描述有,

在实践中,setTimeout 会在其完成当前任何延宕事件的事件处理器的执行,以及完成文档当前状态更新后,告诉浏览器去启用 setTimeout 内注册的函数。

就题论题的讲,就是说script脚本加载完成了之后,setTimeout才会执行注册的函数,那么有多少setTimeout?

每个for循环都会执行一次setTimeout,并且第二个参数为0,就是说,等脚本执行完毕,会有100个function依次执行,那么每次function都会打印i,那么问题来了,此时脚本已经加载完毕,这时候i值多少?此时i值即为100。所以会打印出100个100来。

弄清楚这个,下面我自己测试了俩个用例,也挺有意思的,知道上面这个原理(如果你懂得),也不难弄明白下面这俩个例子的执行结果为何不同

代码:

 <html>    
 <head>    
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">    
  <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">    
  <meta name="renderer" content="webkit">    
  <title>demo</title>      
 </head>    
 <body>    
    <p>触发按钮时,请注意链接的变化</p>  
 </body>    
    <script type="text/javascript">  
var j = 0;  
for(var i=0;i<100;i++){  
    setTimeout(function(){  
        console.log("j:"+j);  
        console.log("i:"+i);  
        j++;  
    },0);  
}  
</script>   
</html>

执行代码结果如下。

15:17:46.788 abc.html:15 j:0
15:17:46.788 abc.html:16 i:100
15:17:46.788 abc.html:15 j:1
15:17:46.788 abc.html:16 i:100
15:17:46.788 abc.html:15 j:2
15:17:46.788 abc.html:16 i:100
15:17:46.788 abc.html:15 j:3
15:17:46.788 abc.html:16 i:100
15:17:46.788 abc.html:15 j:4

script脚本加载完成了之后,setTimeout才会执行注册的函数

每个for循环都会执行一次setTimeout,并且第二个参数为0,就是说,等脚本执行完毕,会有100个function依次执行,那么每次function都会打印i,那么问题来了,此时脚本已经加载完毕,这时候i值多少?此时i值即为100。所以会打印出100个100来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值