使用 ES6 / ES2015 在 JavaScript 中创建函数

使用 ES2015 (ES6) 中的生成函数,我们现在可以使用 yield 关键字来定义可以返回多个值的函数。

1function* someGenerator(){
2  yield 'Cats';
3  yield 'Dogs';
4  yield 'Birds';
5}

注意使用函数关键字旁边的 * 字符,表示它是一个生成函数。

现在,让我们创建一个生成器的实例,并通过在生成器上调用 next() 来提取值:

1const gen = someGenerator();
2
3console.log(gen.next().value); // Cats
4console.log(gen.next().value); // Dogs
5console.log(gen.next().value); // Birds
6console.log(gen.next().value); // Undefined

next() 返回一个具有值和完成的布尔式调用的对象,如果生成器没有值,则返回 true:

1const gen2 = someGenerator();
2
3console.log(gen2.next().done); // false
4console.log(gen2.next().done); // false
5console.log(gen2.next().done); // false
6console.log(gen2.next().done); // true

ID 发电机

在生成器函数中,你可以使用无限时来创建一个函数,它每次在它上调用下一个()时都会生成一个新ID,在这种情况下,无限循环并不危险,因为它只会一次执行下一个():

 1function* idGen(){
 2  let i = 0;
 3  while (true) {
 4    yield ++i;
 5  }
 6}
 7
 8const myIdGen = idGen();
 9
10console.log(myIdGen.next().value); // 1
11console.log(myIdGen.next().value); // 2
12console.log(myIdGen.next().value); // 3
13console.log(myIdGen.next().value); // 4
Published At
Categories with 技术
Tagged with
comments powered by Disqus