准所周知,setTimeout是延时器,想必让大家写一个延时器也没有任何问题,延时器中的延时设置为0,又会是怎样的效果呢?
我们看一下延时器的写法:
setTimeout(function(){
},1000)
接下来我们看一个例子
for( var i=0;i<6;i++){
setTimeout(function(){
console.log("里面输出的结果是:",i);
},0)
console.log("外面输出的结果是:",i);
}
童鞋们觉得会输出什么?
结果如下:
外面输出的结果是:0
外面输出的结果是:1
外面输出的结果是:2
外面输出的结果是:3
外面输出的结果是:4
外面输出的结果是:5
里面输出的结果是:6个6
为什么会这样呢?
这里涉及到单线程问题,先执行当前的任务,再执行setTimeout队列。还有一方面就是说setTimeout是一个延时器,必定会后执行。setTimeout(0)和setTimeout(其他的正值)作用类似,但0执行速度会更快。
<script type="text/javascript">
console.log("111");
for( var i=0;i<6;i++){
setTimeout(function(){
console.log("setTimeout上面",i);
},100)
setTimeout(function(){
console.log("setTimeout下面",i);
},0)
console.log("外面的i为:",i); //0 1 2 3 4 5 先执行
}
console.log("11");
</script>
结果为:
111
外面的i为: 0
外面的i为: 1
外面的i为: 2
外面的i为: 3
外面的i为: 4
外面的i为: 5
11
setTimeout下面 6
setTimeout上面 6
转载自原文链接, 如需删除请联系管理员。
原文链接:setTimeout()延时器,转载请注明来源!