參數: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);