您的位置:首页 > Web前端 > JavaScript

ES6新特性——GeneratorFunction介绍

2016-09-22 11:23 211 查看
function* test(){}
function * test(){}
function *test(){}
test = function* (){}
test = function *(){}


上述均为生成器函数

还可以通过一下方式判断

Object.prototype.toString.call(test)
// 显示[object GeneratorFunction]


生成器函数的行为与普通函数并不相同,表现为如下3点:

1. 通过new运算符或函数调用的形式调用生成器函数,均会返回一个生成器实例;

2. 通过new运算符或函数调用的形式调用生成器函数,均不会马上执行函数体的代码;

3. 必须调用生成器实例的next方法才会执行生成器函数体的代码。


关键字yield——迭代器生成器

用于马上退出代码块并保留现场,当执行迭代器的next函数时,则能从退出点恢复现场并继续执行下去。下面有2点需要注意:

1. yield后面的表达式将作为迭代器next函数的返回值;

2. 迭代器next函数的入参将作为yield的返回值(有点像运算符)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  js 函数