2021-07-16

ES6中的generators学习

ES6的generator函数允许在运行的过程中暂停一次或多次,然后再恢复运行。暂停的过程中允许其它的代码执行。
在generator函数内部,可以使用新的参数yield从内部使得generator函数停止运行,除了generator中的yield函数,不能使用其他打断运行。

generator语法
在这里插入图片描述
*运算符是一个标识符,表示这是一个generator
在这里插入图片描述
这里的yield后面是一个表达式而不是语句,当generator函数暂停时,yield会返回 foo ,下一次启动时,会再传入一个新的值赋给x

Generator遍历器
使用next()来进行遍历
在这里插入图片描述
在这里插入图片描述
上图表示了Generator函数的运行过程;
第一次表达式yield(x)返回的是第一次传入的值5,此时x变量是5,第二次传入11替代yield(x),此时y变量就是12,it.next(11)=4,第三次传入2替代yield(y/3),此时z变量就是2,最后it.next(2)=5+12+2=19;

for … of 循环
在这里插入图片描述
由foo()创建的遍历器被for…of循环自动捕获,然后自动进行遍历,每遍历一次就返回一个值,直到属性done的值为true。只要属性done的值为false,它就会自动提取value属性的值并将其传递给迭代变量。


版权声明:本文为weixin_46618031原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。