yield

yield是什么

  • yield是ES6的新关键字,使生成器函数执行暂停,yield关键字后面的表达式的值返回给生成器的调用者。它可以被认为是一个基于生成器的版本的return关键字。
  • yield关键字实际返回一个IteratorResult(迭代器)对象,它有两个属性,value和done,分别代表返回值和是否完成。
  • yield无法单独工作,需要配合generator(生成器)的其他函数,如next,懒汉式操作,展现强大的主动控制特性。

 

当yield在赋值表达式的右边,如 上面的图例,或如var result = yield 1

yield语句本身没有返回值,或者说返回值是undefined

但是当我们调用next(param)传参的时候,param不但作为next返回对象的value值,它还作为上一条yield 的返回值,所以result 才会被成功赋值。

据图中例子b的话,就是在第一次调用时有生成传参5,第二次调用时传入传入12,是作为yield(x+1)的返回值,可得出y = 2 * 12,第三次传入13,同理可得到Z,此时return值作为next的返回值value返回

转载于:https://my.oschina.net/mdu/blog/3075628

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值