参数:ajax
setTimeout(fn,100,1,2)。第一个和第二是参数固定的,第一个是回调函数,第二个是延迟时间,后面的都是回调函数的参数。
返回值:函数
setTimeout返回值是一个id,表示setTimeout的id,便于使用clearTimeout清除。
使用setTimeout能将里面的函数加入到任务队列中去。this
console.log(1); setTimeout('console.log(2)',1000); console.log(3);
上面代码执行到setTimeout时,定时线程会将里面的代码放在定时任务队列里面。而后1s后输出2。假如setTimeout('console.log(2)',1000);后面有代码报错,setTimeout也就不会执行了。
setTimeout回调函数里面的this关键字指向全局环境。线程
let x=1; let obj={ x:2, y:function(){ console.log(this.x) } } setTimeout(obj.y(),1000)//此时输入的是1。 解决办法就是在套一层函数隔开。 let x=1; let obj={ x:2, y:function(){ console.log(this.x) } } setTimeout(function(){obj.y()},1000)//此时输入的是2。
var i = 1; var timer = setTimeout(function f() { // ... timer = setTimeout(f, 2000); }, 2000);