function test(){
console.log("test函数");
}
setTimeout(function(){
console.log("定时器回调函数");
},0);
test();
//结果:
//先输出:test函数
//再输出:定时器回调函数
原本设想,应该按照顺序执行,会先输出定时器回调函数,再输出test函数。结果没想到竟然反着输出!WHY?
查找资料得证:
(1)首先要知道js是单线程的;
(2)js是基于事件驱动的语言,会按照事件队列执行;
(3)setTimeout会开辟另外一个线程;
(4)会先执行主线程,再执行setTimeout。
完整解释:https://www.cnblogs.com/yelongsan/p/6296700.html