测试代码 :
console.log("111111111111");
console.log("22222222222");
setTimeout(function () {
console.log("333333333");
}, 100);
setTimeout(function () {
console.log("444444444");
}, 0);
console.log("55555555");
输出顺序如下:
111111111111
22222222222
55555555
444444444
333333333
我的理解:因为js是单线程,当js代码中碰到异步操作时,会先跳过该操作,先执行下面的代码,完成后再执行。所以js碰到setTimeout()后尽管其间隔为0秒,还是会跳过该函数先往下执行,这样就会理解上面的输出顺序了。