理解ES6生成器函数语法
yield
一、yield关键字用来暂停和继续执行一个生成器函数。当外部调用生成器的next()方法时,yield关键字右侧的表达式才会执行。
二、执行结果会转化为一个对象(包含两个属性,value和done),作为next()方法的返回传。
三、对于var foo= yield expression
语句,yield左侧变量foo的值将在下一次调用next()方法时获得,并且等于调用next()方法的参数
下面举一个例子来说明上面三点 仔细推敲一下
function* numbers() {
console.log('function start.');
var v1 = yield 444;
console.log('v1 = ' + v1);
var v2 = yield 1;
console.log('v2 = ' + v2);
return 5;
}
var nums = numbers();
console.log(nums.next(0)); // Object {value: 444, done: false}
console.log(nums.next(1));
/*
v1 = 1 // 调用时的参数
Object {value: 1, done: false}
*/
console.log(nums.next(2));
/*
v2 = 2 // 调用时的参数
Object {value: 5, done: true}
*/