Calling Stack 用來保存「基本型態的資料」(比方來說 number, string…) JavaScript 用來排程(Execution Context)(決定什麼時候會做什麼事情) WEB APIs 透過瀏覽器的 window 物件可以用瀏覽器提供的方法 所以 JavaScript 本身沒有這些方法喔,只是接到了瀏覽器的 WEB API 所以才可以用它們 Callback Queue 這個零件負責保存「已經叫用」的 callback function。然後當 Calling Stack 空了的時候,Event loop 就會把排隊中的 callback function 傳給 Calling Stack ,以便執行 callback function 的任務。 Event Loop Event loop 顧名思義就是一個 loop,做的就是一直在觀察 Calling Stack 是否空了,如果空了就把排隊中的 callback 按照順序推進 Calling stack。 Event loop 一次只會推一個,當 Calling stack 空了它才會推另一個。 function multiply ( a , b ) { return a * b } function square ( n ) { return multiply ( n , n ) } function printSquare ( n ) { let squared = square ( n ) console . log ( squared ) } printSquare ( 4 ) 當在執行 JavaScript 的函式時,首先進入 stack 的會是這個檔案中全域環境的程式(這裡稱作 main );接著 printSquare 會被呼叫(invoke)因此進入堆疊(stack)的最上方;在 printSquare 中會呼叫 square() 因此 square() 會進入堆疊(stack)的最上方;同樣的, square 中呼叫了 mu...