参数问题
setTimeout(func|code, delay)
第一个参数可以是函数名,
setTimeout(f,1000);```
第一个参数可以是一段代码,必须以字符串的形式
setTimeout('console.log(2)',1000);```
或者
setTimeout(function (){console.log(2)},1000);```
###执行顺序
setTimeout会在指定时间向消息队列的末尾添加一条消息,参见单线程模式
setTimeout(function() {
console.log("Timeout");
}, 0);
function a(x) {
console.log("a() 开始运行");
b(x);
console.log("a() 结束运行");
}
function b(y) {
console.log("b() 开始运行");
console.log("传入的值为" + y);
console.log("b() 结束运行");
}
console.log("当前任务开始");
a(42);
console.log("当前任务结束");
// 当前任务开始
// a() 开始运行
// b() 开始运行
// 传入的值为42
// b() 结束运行
// a() 结束运行
// 当前任务结束
// Timeout
上面代码说明,setTimeout(f, 0)必须要等到当前脚本的*所有同步任务结束后才会执行。
网友评论