圖解js執行過程
console.log('Hi');
setTimeout(function cb1() {
console.log('cb1');
}, 5000);
console.log('Bye');
複製程式碼
- 動態示意圖
- 分解過程
- 第一步
- 第二步 3.第三步 4.第四步
- 第五步
- 第六步
- 第七步
- 第八步
- 第九步
- 第十步
- 第十一步
- 第十二步
- 第十三步
- 第十四步
- 第十五步
- 第十六步
擴充套件
- 通過了解js函式的執行過程,我們可以更好的理解在監聽頁面滾動事件、視窗大小改動因為它們會產生大量的函式呼叫在callback queue(回撥佇列裡)等待被拉取到Call Stack棧裡執行,容易阻塞頁面、造成假死。使用throttle函式或debounce函式可以減少回撥函式的數量,起到優化的作用。
- setTimeout的延遲觸發並不會一定精確,因為回撥棧裡的佇列為空時,才會去拉取setTimeout的函式執行,假設有的函式執行比價耗時,延遲執行的時間到了setTimeout函式也不一定會執行。