function 用于定义生成器函数,返回可暂停/恢复的生成器对象;yield 产出单值,yield 委托可迭代对象;生成器原生支持迭代协议,并可通过 next(value) 实现双向通信。

JavaScript 中的 function* 是定义生成器函数的关键字,它创建的函数会返回一个生成器对象(Generator Object),这个对象是一个迭代器,可以**暂停和恢复执行**,适合处理惰性求值、分步计算、异步流程控制等场景。
生成器函数的基本语法和行为
生成器函数用 function* 声明(* 紧跟在 function 后,空格可选),内部使用 yield 暂停执行并产出一个值。每次调用生成器对象的 next() 方法,函数就从上次暂停处继续运行,直到下一个 yield 或结束。
例如:
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 }
console.log(it.next()); // { value: 3, done: false }
console.log(it.next()); // { value: undefined, done: true }
yield 和 yield* 的区别
yield 产出单个值;yield* 则用于委托另一个可迭代对象(如另一个生成器、数组、字符串等),把它的遍历结果“展开”到当前生成器中。
立即学习“Java免费学习笔记(深入)”;
标签: javascript java 区别 可迭代对象
还木有评论哦,快来抢沙发吧~