ES6 Generator に関するメモ

1. このページの目的

2. 関連するプロトコル(インタフェース)

iterable プロトコル

JavaScriptコード

let o = "Hi"[Symbol.iterator](); // StringIterator {}
o.next(); // { value: "H", done: false }
o.next(); // { value: "i", done: false }
o.next(); // { value: undefined, done: true }
o.next(); // { value: undefined, done: true }

iterator プロトコル

3. ジェネレーター関数(function* () { ... } で定義する)

JavaScriptコード

function* gen() {
  yield 1;
  yield 2;
  yield 3;
}

for (let n of gen()) {
  console.log(n);
}

4. Generator オブジェクト

JavaScriptコード

function* gen() {
  yield 1;
  yield 2;
  yield 3;
}

let g = gen();

console.log(g.next()); // { value: 1, done: false }

let h = g[Symbol.iterator](); // g から iterator オブジェクトを取り出す

console.log(h.next()); // { value: 2, done: false } ← 同じオブジェクトを参照している

Methods

5. メモ

6. 参考

7. 履歴

日付 内容
作成 2019-05-10