參數(shù)問(wèn)題
setTimeout(func|code, delay)
第一個(gè)參數(shù)可以是函數(shù)名,
setTimeout(f,1000);```
第一個(gè)參數(shù)可以是一段代碼,必須以字符串的形式
setTimeout('console.log(2)',1000);```
或者
setTimeout(function (){console.log(2)},1000);```
###執(zhí)行順序
setTimeout會(huì)在指定時(shí)間向消息隊(duì)列的末尾添加一條消息,參見(jiàn)單線程模式
setTimeout(function() {
console.log("Timeout");
}, 0);
function a(x) {
console.log("a() 開(kāi)始運(yùn)行");
b(x);
console.log("a() 結(jié)束運(yùn)行");
}
function b(y) {
console.log("b() 開(kāi)始運(yùn)行");
console.log("傳入的值為" + y);
console.log("b() 結(jié)束運(yùn)行");
}
console.log("當(dāng)前任務(wù)開(kāi)始");
a(42);
console.log("當(dāng)前任務(wù)結(jié)束");
// 當(dāng)前任務(wù)開(kāi)始
// a() 開(kāi)始運(yùn)行
// b() 開(kāi)始運(yùn)行
// 傳入的值為42
// b() 結(jié)束運(yùn)行
// a() 結(jié)束運(yùn)行
// 當(dāng)前任務(wù)結(jié)束
// Timeout
上面代碼說(shuō)明,setTimeout(f, 0)必須要等到當(dāng)前腳本的*所有同步任務(wù)結(jié)束后才會(huì)執(zhí)行。