贝利信息

什么是javascript的生成器函数_生成器函数如何实现惰性求值

日期:2025-12-27 00:00 / 作者:紅蓮之龍
JavaScript生成器函数用function*声明,通过yield暂停执行并返回值,调用后返回迭代器,每次next()才执行一段,实现惰性求值,适合无限序列与大数据流处理。

JavaScript 的生成器函数是一种可以暂停和恢复执行的特殊函数,它天然支持惰性求值——即“需要时才计算”,而不是一次性生*部结果。

生成器函数的基本定义与语法

生成器函数用 function* 声明,内部使用 yield 暂停执行并返回一个值。调用后不立即运行,而是返回一个迭代器对象(Iterator)。

示例:

function* count() {
  yield 1;
  yield 2;
  yield 3;
}
const it = count();
console.log(it.next()); // { value: 1, done: false }
console.log(it.next()); // { value: 2, done: false }

惰性求值的核心机制

惰性求值的关键在于:生成器函数体内的代码,只在每次 .next() 被调用时才执行一段,而非启动时全量运行。这避免了提前计算、内存占用和无用运算。

用生成器实现常见惰性操作

你可以组合多个生成器,像 Unix 管道一样链式处理数据流,且全程保持惰性。

注意点与实际限制

生成器不是万能的“懒加载魔法”,它的惰性依赖于使用者是否主动迭代。如果用扩展运算符 [...gen]Array.from(gen),仍会一次性展开全部值。