什么是JavaScript的生成器函数_yield关键字如何控制执行流程?

JavaScript生成器函数用function*声明,通过yield暂停执行并返回迭代器对象;每次调用next()从暂停处继续,yield可传值与接收外部输入,适用于惰性计算、自定义迭代及异步编程基础。

什么是javascript的生成器函数_yield关键字如何控制执行流程?

JavaScript的生成器函数是一种可以暂停和恢复执行的特殊函数,yield 是它的核心控制关键字——它让函数不再“一气呵成”,而是像按了暂停键一样,每次调用 next() 才继续往下走一步。

生成器函数怎么写?

function* 声明,内部用 yield 标记暂停点:

function* count() {  console.log('start');  yield 1;  console.log('after first yield');  yield 2;  console.log('end');  return 'done';}

调用它不会立即执行,而是返回一个**迭代器对象**:

const it = count(); // 没有打印任何内容

yield 怎么控制流程?

每次调用 it.next(),函数从上次暂停处(或开头)运行,直到遇到下一个 yieldreturn

立即学习“Java免费学习笔记(深入)”;

it.next() → 输出 'start',返回 { value: 1, done: false }it.next() → 输出 'after first yield',返回 { value: 2, done: false }it.next() → 输出 'end',返回 { value: 'done', done: true }

yield 表达式的值就是 next() 返回的 value;函数结束时 done 变为 true

yield 还能接收外部传入的值

下次调用 next(value) 时传入的参数,会成为上一个 yield 表达式的返回值:

function* echo() {  let input = yield 'ready?';  console.log(input); // 'hello'  yield 'got it';}

使用时:

it.next() → 返回 { value: 'ready?', done: false }it.next('hello')input 得到 'hello',打印并返回 { value: 'got it', done: false }

实际中常用来做什么?

生成器适合需要**分步、惰性、可中断**的场景:

实现自定义迭代逻辑(比如遍历树、分页请求)配合 for...of 自动遍历(只要没 return,done: false 的 yield 都会被取)作为异步编程的早期基础(async/await 就是它的语法糖升级)构造状态机或协程式流程控制

基本上就这些。yield 不是魔法,只是把函数执行权交还给调用方,等你再点“播放”才继续——它让 JS 第一次拥有了真正可控的暂停能力。

以上就是什么是JavaScript的生成器函数_yield关键字如何控制执行流程?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1543972.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
什么是变量_Javascript中如何声明它们
上一篇 2025年12月21日 15:30:13
javascript如何实现函数式编程_纯函数和柯里化有什么好处
下一篇 2025年12月21日 15:30:31

相关推荐

发表回复

登录后才能评论
关注微信