簡單解釋 JavaScript Generator

2025-02-26

JavaScript Generator 是一種特殊的函數,允許函數在執行過程中暫停並恢復。

  1. 定義方式:在 function 關鍵字後面加上星號 (function*)。
  2. 返回值:Generator 函數返回一個迭代器。
  3. 暫停與恢復:透過 yield 關鍵字,Generator 可以暫停執行,並返回一個值;後續可以透過迭代器的 next() 方法繼續執行。
javascript
function* powers(n) {
  for (let current = n;; current *= n) { // 從 n 開始,每次乘以 n
    yield current; // 暫停函數,並返回當前的值
  }
}

for (let power of powers(3)) { // 使用 for...of 迭代生成器
  if (power > 50) break; // 當值超過 50 時停止迴圈
  console.log(power); // 輸出當前的值
}
// → 3
// → 9
// → 27

參考資料:Generators - Eloquent JavaScript 4th edition (2024)

瓜熊

你好,我是瓜熊,熱愛研究新鮮的東西。