JavaScript的定时器

字数 207阅读 61

什么是定时器

提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInterval()这两个函数来完成。

下面这段代码输出结果是? 为什么?

var a = 1;
setTimeout(function(){
    a = 2;
    console.log(a); // 2
}, 0);
var a ;
console.log(a); // 1
a = 3;
console.log(a); // 3

代码输出 1 3 2 ,因为定时器会在队列最后执行

下面这段代码输出结果是? 为什么?

var flag = true;
setTimeout(function(){
    flag = false;
},0)
while(flag){}
console.log(flag);

由于定时器会在队列最后执行,本次测试中flag 传入的值为true,结果是一直在循环。while条件表达式,在每次循环前被求值。如果求值为真,就会被执行。如果求值为假,则跳出 while 循环执行后面的语句。

下面这段代码输出?如何输出delayer: 0, delayer:1...(使用闭包来实现)

for(var i=0;i<5;i++){
    setTimeout(function(){
         console.log('delayer:' + i ); // delayer:5
    }, 0);
    console.log(i); // 0 1 2 3 4
}

闭包实现:

for(var i=0;i<5;i++){
    setTimeout((function(i){
        var j = i;
        return function(){
            console.log('delayer:' + j ); // delayer:0 delayer:1 delayer:2 delayer:3 delayer:4
        }
    })(i),0);
    console.log(i); // 0 1 2 3 4
}

推荐阅读更多精彩内容