(function() {
console.log(1);
setTimeout(function(){console.log(2)}, 1000);
setTimeout(function(){console.log(3)}, 0);
console.log(4);
})();
结果:
1 4 3 2
JavaScript引擎是单线程运行的,浏览器无论在什么时候都只且只有一个线程在运行JavaScript程序
setTimeout和setInterval是伪线程
立即执行函数里面的
1 4
会优先执行,setTimeout则是会进入异步队列等待执行,因为有时间的延迟,因此3
先执行,2
后执行
具体详情看参考资料详解
参考资料: