什么是定时器
提供定时执行代码的功能,叫做定时器(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
}
网友评论