1. 程式人生 > >JavaScript中 ES6 生成器的注意事項

JavaScript中 ES6 生成器的注意事項

生成器:generator。

function *generator(...) {...}

使用星號*就表示這是一個生成器。

不過,生成器並不是iterable,需要使用generator()來構造一個迭代器來供 for ... of 迴圈迭代。

function *something2() {
  let nextVal;
  while(true) {
    if (nextVal === undefined) {
      nextVal = 1;
    } else {
      nextVal = (3 * nextVal) + 6;
    }
    yield nextVal;
  }
}

for (let v of something2()) {    // 這裡是something2() ,而不是something2
  console.log(v);
  if (v > 500) break;
}

// 1 9 33 105 321 969

生成器名字加(),就產生一個迭代器,而 for...of 迴圈需要的是一個iterable。所以,生成器的迭代器也是一個iterable。