生成器(Generator)是一种特殊的迭代器,它允许你在函数中使用 yield
关键字来返回一个值序列。每次调用生成器的 next()
方法时,它会从上次暂停的地方继续执行,直到遇到下一个 yield
语句。由于生成器不会一次性计算整个序列,而是按需生成值,因此它们可以被视为无限的。
生成器函数使用 function*
语法声明,并且可以在函数体内使用 yield
关键字。当调用生成器函数时,它返回一个生成器对象,而不是立即执行函数体。
function* infiniteGenerator() {
let count = 0;
while (true) {
yield count++;
}
}
生成器主要有两种类型:
function*
声明的函数,返回一个生成器对象。生成器常用于以下场景:
生成器之所以是无限的,是因为它们可以在需要时无限地生成新的值。只要生成器的逻辑允许(例如,一个永远为真的循环条件),它就可以持续不断地产生新的输出。
如果你需要限制生成器的输出,可以在生成器函数内部添加逻辑来终止循环。例如,你可以设置一个计数器,当达到某个特定值时退出循环。
function* limitedGenerator(limit) {
let count = 0;
while (count < limit) {
yield count++;
}
}
const gen = limitedGenerator(10);
for (let value of gen) {
console.log(value); // 输出 0 到 9
}
在这个例子中,limitedGenerator
函数接受一个 limit
参数,当生成器产生的值达到这个限制时,循环将终止,生成器也就不再产生新的值。
通过这种方式,你可以控制生成器的输出,使其适应不同的应用场景。
领取专属 10元无门槛券
手把手带您无忧上云