setTimeout()延时器

准所周知,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
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值