我們都知道setTimeout是一個延遲執行的函數 會得到1,3,2 但是 你知道這段代碼會執行什麼樣的效果嗎 正確答案是2,1 一開始我也很疑惑, 但是答案不是這樣的 聽阮一峰大神的解釋 setTimeout(fn,0)的含義是指定某個人物在主線程最早可得的空閑時間執行,也就是說,儘可能早的執行。 ...
我們都知道setTimeout是一個延遲執行的函數
console.log(1); setTimeout(function(){console.log(2);},1000); console.log(3);
會得到1,3,2
但是
setTimeout(function(){console.log(1);}, 0); console.log(2);
你知道這段代碼會執行什麼樣的效果嗎
正確答案是2,1
一開始我也很疑惑,
setTimeout(function(){console.log(1);}, 0);不是隔了0秒就執行嘛,就是立即執行的意思啊,那就是應該答案是1,2呀
但是答案不是這樣的
聽阮一峰大神的解釋
setTimeout(fn,0)的含義是指定某個人物在主線程最早可得的空閑時間執行,也就是說,儘可能早的執行。它在任務隊列的尾部添加一個事件,因此要等到同步人物和任務隊列現有的事件都處理完,才會得到執行