js生成器函数

1.定义方式

语法:

yield:返回当前次,类似暂停,可以返回多次,后续可以继续执行yield之后的代码,return,类似退出,只可返回1次,后续继续执行就会重新调用函数,相当于重新播放
function*(){
	...
}

案例
直接调用

 function* foo(x){
            yield x+10;  
            yield x+20;
            return x+30;
        }

        var f = foo(1);
        console.log(f);

在这里插入图片描述

无参情况

next()获取到当前yield的返回值
当yield未赋值给一个变量时,不需要传参

在这里插入图片描述
结果分析:

第一次: 1+ 10 固 value = 11
第二次: 1+ 20 固 value = 21
第三次: 1+30 固value = 31,后续没有返回了,所以done为true

案例2

有参情况
当yield赋值给一个变量时,第一次调用next()传参是无效的,不需要传参,默认使用function*直接调用的参数

第二次调用next(n),那么n就是上一次yield的返回值

在这里插入图片描述
结果分析:

第一次调用next()传不传参数都是无效的 他会默认使用 foo(1) 即x = 1这个值

            第一次 x=1  yield (x+2)  -> 3
            第二次 将30赋值给第一次yield的返回值 -> y = 60 ;固,yield(60/3) = 20
            第三次 {40 赋值给上一次 所以 -> z = 40
                第二次 值是20 , 所以 yield (y/3) = 20 -> y = 60
                第一次 值是3, yield (x+2) -> x = 1
                所以 x + y + z = 101
            }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值