Javascript生成器函数

function* 这种声明方式(function关键字后跟一个星号)会定义一个生成器函数 (generator function),它返回一个Generator 对象

示例:

 function* generator(x) {
      console.log('x', x);
      let a = yield x;
      console.log('a', a);
      let b = yield (x + 1) + a;
      console.log('b',b);
      yield a + b;
      console.log('a + b =', a + b);
      return a + b;
 }
generator(10);
let g = generator(10);
console.log(g.next());
console.log(g.next(1000).value);
console.log(g.next(50));
console.log(g.next());

执行结果

x 10
{ value: 10, done: false }
a 1000
1011
b 50
{ value: 1050, done: false }
a + b = 1050
{ value: 1050, done: true }

a和b为迭代器(iterator)对象,迭代器对象的值取决于next方法,所以返回值为1050

posted @ 2019-12-11 13:55  ツ稻草人  阅读(399)  评论(0)    收藏  举报