function readData(idx) { for (let i = 0; i < 100; i++) { idx++; console.log(idx); } if (idx < 500) { readData(idx); } }

readData(0); console.log("after"); 

截圖 2021-10-14 下午5.27.44.png

  1. 1~100
  2. 101~500
  3. after

執行 console.log(idx),從 Call stack 移除 console.log(idx),再執行 readData(idx),再從 Call stack 移除 readData(idx),最後執行 console.log("after"),清空 Call stack。

function readData(idx) { for (let i = 0; i < 100; i++) { idx++; console.log(idx); } if (idx < 500) { setTimeout(function () { readData(idx); }, 0); } }

readData(0); console.log("after");