ES6之Generator函数

Generator函数是ES6的重要特性,它使用function*声明,内含yield关键字。调用Generator函数返回生成器对象,通过调用next方法进行迭代。next方法可以接收参数,影响yield表达式的返回值。生成器对象作为遍历器,用于管理函数内部状态。
摘要由CSDN通过智能技术生成


前言

Generator函数,又称生成器函数,是ES6的一个重要的新特性。


一、函数声明

普通函数用function来声明,Generator函数用function*声明。
Generator函数内部有新的关键字:yield( 产出),普通函数没有。

function* fn() {
	console.log('我是generator函数1');
	yield '我是2'
	console.log('我是generator函数2');
	yield '我是3'
	console.log('我是generator函数3');
}

二、函数调用

一开始,我们调用函数执行后,返回了一个:[object Genrator]生成器对象,我们把它赋值到变量gen中,仅此而已,并没有做太多的事情。

var gen = fn()
//第1次调用生成器对象gen的next( )方法,返回了一个对象
console.log(gen.next());	
//我是generator函数1   {value: '我是2', done: false}

//第2次调用生成器对象gen的next()方法,同样得到了一个对象
console.log(gen.next());
//我是generator函数2   {value: '我是3', done: false}

//最后一次调用生成器对象gen的next()方法,又得到了一个对象,但是返回的确实true。
console.log(gen.next());
//我是generator函数3   {value: undefined, done:true }

没错!这里可以把Generator函数被调用后得到的生成器理解成一个遍历器iterator,用于遍历函数内部的状态。

三、next方法

next( ) 方法还可以接受一个参数,它的参数会作为上一个yield的返回值.

function* genEr() {
	console.log('1');
	let res = yield '我是第一个'
	console.log(res);
	let res_1 = yield res
	yield res_1
}
let genEr_1 = genEr()
console.log(genEr_1.next());
//1   {value: '我是第一个', done: false}

总结

以上就是今天要讲的内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值