定时器面试题
1. function test(){
this.name = "taobao";
this.wait = function(){
var that = this; // 注意这里的赋值
setInterval(function(){
alert(that.name); //that.name 指的就是 taobao
},1000);
return wait();
}
test(); //函数执行
2. console.log(1);
setTimeout(function(){
console.log(2);
},0);
setTimeout(function(){
console.log(3);
},0);
console.log(4);
依次打印出来是:1,4,2,3
解释:JS代码是按照顺序执行的,所以先输出1,setTimeout(function(){},0); 0 的作用很简单,就是为了把f 放到运行队列中,然后去逐个去执行
也就是说,无论setTimeout(function(){ f } , 0);写在哪,都可以保证在队列中最后执行。因此,结果是 1 4 3 2
function test(){ var a = 1; setTimeout(function(){ alert(a); a=3; },3000); a=2; setTimeout(function(){ alert(a); a=4; },1000); setTimeout(function(){ alert(a); },2000) } test(); alert(0);
以上代码弹出来 依次是 0 2 4 4
setTimeout是一个异步延迟函数,所以依次弹出 0 2 4 4