generator生成器函数之初认识

3 篇文章 0 订阅

generator生成器函数之初认识

generator 翻译过来就是生成器

与普通函数对比

普通函数: 普通函数执行,会一头走到底
generator函数: generator函数在执行的过程会停顿

举个列子:普通函数就像飞机,飞机一起飞一般中间是不会停顿的直到到达终点;generator函数就相当于出租车,当你中途需要下车短时间干个事时,司机是可以停车等你回来的。2另外:generator函数 会有个 * 号,这个 * 号可以贴zhe
function或函数名写,但不能与function和函数名都有空格隔开,正确写法,如:
1) function* print(){}
2) function *print(){}

错误写法:
function * print(){}

generator 的 yield

使用yield 有终止程序执行的作用——就是当程序遇到 yield 时就会暂停执行,把控制权交出去,当我们需要程序继续执行时,就把控制权还回来给 yield。

在这里插入图片描述

通过 console.log(genObj) 打印出这个generator 对象 ,可以看到有个next方法(如下图),接下来我们可以通过它的这个next方法执行它里面的代码
在这里插入图片描述

1)使用一次next()方法

在这里插入图片描述

在这里插入图片描述

1)使用两次next()方法

在这里插入图片描述

解析:使用一次next方法时,当程序执行遇到 yield 就会暂定执行,所以控制台只打印出a;使用两次next方法时,第一个next的情况如上,但是到了第二次使用next方法时,程序就会从上一次中断的地方继续往下执行,于是两次使用 next方法 在控制台就能输出 a 和 b 。

那么generator是怎么做到暂停和继续的呢,可以这样理解:通过generator生成了一堆小函数,也就是说在我们看不到的内部,它其实是有多个函数,比如它里面有 两个函数 分别为 print1和print2,第一次执行 next,它执行的是 print1,第二次next 它执行的是 print2。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值