setTimeout(function,0)
来源:互联网 发布:rational rose mac 编辑:程序博客网 时间:2024/06/06 02:12
转载应注明出处
今天去tx面试的时候遇到这样一个问题,其中有一题是
<script type="text/javascript">for(var i=0;i<100;i++){setTimeout(function(){console.log(i);},0);}</script>
setTimeout是定时器,这个自行去了解,我想说的是这个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来。
弄清楚这个,下面我自己测试了俩个用例,也挺有意思的,知道上面这个原理(如果你懂得),也不难弄明白下面这俩个例子的执行结果为何不同。
例1:
<script type="text/javascript">var j = 0;for(var i=0;i<100;i++){setTimeout(function(){console.log(j);console.log(i);j++;},0);}</script>
例2:
<script type="text/javascript">var j = 0;for(var i=0;i<100;i++){setTimeout(function(){console.log(j);console.log(i);},0);j++;}</script>
0 0
- setTimeout(function,0)
- setTimeout function 传参
- js中的setTimeout详解,和关于它的setTimeout(function(){},0)问题
- js函数使用技巧之 setTimeout(function(){},0)
- setTimeout(function(){}) 堆栈 ES6 Promise
- setTimeout("function()",n)怎么兼容FF?
- JavaScript之eval、Function、setTimeOut、setInterval
- JS触发器 setTimeout(function(),ms) + 时间 new Date()
- js setTimeout(function(param),1000)传参问题解决
- setTimeout 0 妙用
- setTimeout(0) 的作用
- setTimeout延时0s
- setTimeout
- setTimeout
- setTimeout( )
- setTimeout
- setTimeout
- setTimeout
- Spring + Sping MVC +Hibernate 整合
- Spring MVC 入门示例讲解
- maven pom文件详解
- 【JS】:JS实现网页计算器
- Matlab中rectangle函数
- setTimeout(function,0)
- unity_Editor自定义窗口顶部添加小图标
- solr与tomcat搭建
- java实现金钱加千位符
- 宏定义中的do...while(0)
- java中finally关键字
- ThreadLoacl的作用及使用
- leetcode——34——Search for a Range
- 关于通过Uri 查询文件路径的问题