新闻中心

js中yield和yield*表达式的介绍

2025-11-14
浏览次数:
返回列表
yield用于暂停生成器函数并返回单个值,调用next()继续执行;yield*委托给其他生成器或可迭代对象,逐个产出其值。

js中yield和yield*表达式的介绍

在J*aScript中,yieldyield* 是用于生成器函数(Generator Functions)的关键字。它们让函数可以暂停执行、返回中间值,并在之后恢复执行,是实现惰性求值和控制流程的重要工具。

yield 表达式

yield 只能在用 function* 定义的生成器函数内部使用。它会暂停函数的执行,并向调用者返回一个值。当调用生成器的 next() 方法时,函数才会继续执行。

基本语法:

function* myGenerator() {
  yield '第一步';
  yield '第二步';
  return '结束';
}

使用示例:

const gen = myGenerator();
console.log(gen.next()); // { value: '第一步', done: false }
console.log(gen.next()); // { value: '第二步', done: false }
console.log(gen.next()); // { value: '结束', done: true }

每次调用 next(),函数从上次暂停的地方继续执行,直到遇到下一个 yield 或函数结束。

yield* 表达式

yield* 用于委托给另一个生成器或可迭代对象(如数组、字符串、Map等)。它会“展开”被委托的迭代器,逐个产出其中的值。

常见用法包括:

PHP 网络编程技术与实例(曹衍龙) PHP 网络编程技术与实例(曹衍龙)

PHP网络编程技术详解由浅入深,全面、系统地介绍了PHP开发技术,并提供了大量实例,供读者实战演练。另外,笔者专门为本书录制了相应的配套教学视频,以帮助读者更好地学习本书内容。这些视频和书中的实例源代码一起收录于配书光盘中。本书共分4篇。第1篇是PHP准备篇,介绍了PHP的优势、开发环境及安装;第2篇是PHP基础篇,介绍了PHP中的常量与变量、运算符与表达式、流程控制以及函数;第3篇是进阶篇,介绍

PHP 网络编程技术与实例(曹衍龙) 398 查看详情 PHP 网络编程技术与实例(曹衍龙)
  • 组合多个生成器函数
  • 遍历嵌套结构
  • 复用已有生成逻辑

示例:

function* generatorA() {
  yield 'a';
  yield 'b';
}

function* generatorB() {
  yield* generatorA();
  yield 'c';
}

for (const val of generatorB()) {
  console.log(val); // 输出 a, b, c
}

也可以 yield* 普通可迭代对象:

function* gen() {
  yield* [1, 2, 3];
}
console.log([...gen()]); // [1, 2, 3]

yield 与 yield* 的区别

关键差异在于处理对象的方式:

  • yield:返回右侧表达式的值作为当前产出结果
  • yield*:遍历右侧的可迭代对象或生成器,把每个元素依次 yield 出去

比如 yield [1,2,3] 返回整个数组,而 yield* [1,2,3] 会分别产出 1、2、3。

基本上就这些。掌握 yield 和 yield* 能帮助你写出更灵活的数据流处理逻辑,尤其是在需要延迟计算或构建复杂迭代流程时特别有用。注意它们只能在生成器函数中使用,否则会报错。

以上就是js中yield和yield*表达式的介绍的详细内容,更多请关注其它相关文章!


# 是在  # 石家庄seo推广方法  # 咸宁网站推广优化公司  # 广告网站建设开发多少钱  # 广东企业营销推广成本  # 市南外贸推广网络营销  # 快手营销推广与优化策略  # 连江seo推广营销公司  # 书本素材网站建设  # 滕州网站优化作用  # seo类文章是什么  # 多个  # 有哪些  # javascript  # 如何用  # 第二步  # 它会  # 遍历  # 本书  # 编程技术  # 迭代  # 可迭代对象  # 区别  # 工具  # js  # java 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: Golang如何实现Web文件静态资源服务器_Golang静态资源服务器开发与实践  解决 Vaadin 8 中大文件音频播放与定位时出现的 IOException  J*aScript中赋值与自增运算符的复杂交互与执行机制  html两个JS只运行一个怎么办_让双JS在html中都运行方法【技巧】  铁路12306卧铺选择攻略 铁路12306下铺座位预定技巧  QQ邮箱电脑版登录入口_QQ邮箱官方网站登录平台  极兔快递快件信息查询系统 极兔快递官网运单号追踪  如何在低配置电脑上搭建轻量级J*a环境_占用更小的环境选择技巧  反效果?《战地6》免费试玩开启后玩家数不升反降  漫蛙Manwa2官网入口地址分享 漫蛙漫画PC版永久访问通道  PDF文件体积过大处理_PDF压缩技巧详解  天眼查怎么看公司融资情况 天眼查企业融资历史查询步骤【攻略】  抓大鹅无需下载版 抓大鹅秒玩版入口  css滚动动画效果怎么实现_使用Animate.css滚动触发动画类  J*a应用程序首次运行自动创建文件与目录的最佳实践  使用Python高效删除Word宏并转换DOCM为DOCX格式  R星幕后开发视频泄露 包含《GTA6》等多款大作  三星GalaxyZFold5怎样在相册制作折叠屏分镜_iPhone三星GalaxyZFold5相册制作折叠屏分镜【创意编辑】  MongoDB聚合管道:正确匹配对象数组中_id的方法  抖音网页版快捷访问 抖音网页版网页版入口操作教程  荣耀Play7T运行卡顿解决_荣耀Play7T性能优化  Python多版本共存与虚拟环境管理深度指南  KFC套餐升级怎么获取优惠代码_KFC套餐升级活动与优惠代码获取方法  Win11如何开启讲述人功能 Win11屏幕阅读器(讲述人)开启与关闭【教程】  c++如何使用chrono库处理时间_c++标准库时间与日期操作  必由学网页版入口 必由学官方平台直接访问  Gmail邮箱申请注册直达_Gmail邮箱免费注册PC版官网入口2025  机器学习中对数变换预测结果的反向还原  提升屏幕阅读器对“m”时间单位的播报准确性:HTML与CSS组合解决方案  优化Django表单:提交验证失败后保留用户输入  qq浏览器打开空白页怎么办 qq浏览器启动后显示白屏的解决教程  TikTok搜索不到用户发布内容怎么办 TikTok用户内容搜索优化方法  J*aScript数组对象转换:按指定键分组与值收集  基于动态规划的房屋花卉种植最小成本算法详解  如何解决电商平台定制报价请求的“黑洞”问题,SprykerQuoteRequest模块助你提升客户体验与销售效率  qq游戏网页版直接玩_qq游戏免下载快速入口  c++如何实现一个简单的软件渲染器_c++从零开始的3D图形学  C++如何实现一个智能指针_手动实现C++ shared_ptr的引用计数功能  微信网页版官方入口教程 微信网页版网页版快速登录步骤  中兴BladeV30怎样用测距估书架层高_iPhone中兴BladeV30测距估书架层高【家装参考】  俄罗斯搜索引擎Yandex指南 附2025年免登录官网入口  126邮箱网页版官方入口 126邮箱账号在线登录平台  铃兰之剑为这和平的世界希里技能组及加点推荐  深入理解J*a编译器的兼容性选项:从-source到--release  J*aScript中安全有效地处理localStorage字符串数据  c++中的const_cast和reinterpret_cast怎么用_c++四种类型转换  微信网页版官方入口直达 微信网页版网页版登录使用方法  html网页设计源代码怎么运行_运行html网页设计源代码步骤【指南】  钉钉视频会议声音异常如何处理 钉钉会议音频修复技巧  解决Bootstrap卡片顶部边距导致背景图下移的问题 

搜索