先看一段代码
setTimeout(()=> {
console.log(0);
}, 0)
console.log(1);
let i = 1000
while (i--) { }
console.log(2);
setTimeout(() => {
console.log(3);
})
输出
1
2
0
3
setTimeOut 属于异步任务,并且优先级最低。先执行全局Script代码,执行完同步代码调用栈清空后,再执行异步任务。
setTimeOut(fn, 0)可以实现写的代码前端,却最后执行的效果。
比如
setTimeOut(()={
close()
}, 0)
可以实现当前同步、异步任务全部执行完成后执行close()操作