--- title: Generator slug: Web/JavaScript/Reference/Global_Objects/Generator tags: - Class - ECMAScript 2015 - Generator - JavaScript - Legacy Generator - Legacy Iterator - Reference translation_of: Web/JavaScript/Reference/Global_Objects/Generator ---
{{JSRef}}

Generator オブジェクトは{{JSxRef("Statements/function*", "ジェネレーター関数", "", 1)}}によって返され、反復可能プロトコル反復子プロトコルの両方に準拠しています。

コンストラクター

このオブジェクトを直接インスタンス化することはできません。代わりに、ジェネレーター関数から Generator のインスタンスを返すことができます。

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

const gen = generator(); // "Generator { }"

インスタンスメソッド

{{JSxRef("Generator.prototype.next()")}}
{{JSxRef("Operators/yield", "yield")}} 式で得られた値を返します。
{{JSxRef("Generator.prototype.return()")}}
与えられた値を返し、ジェネレーターを終了します。
{{JSxRef("Generator.prototype.throw()")}}
ジェネレーターにエラーを投げます。(そのジェネレーターの中からキャッチされない限り、ジェネレーターも終了します)

無限イテレーター

function* infinite() {
    let index = 0;

    while (true) {
        yield index++;
    }
}

const generator = infinite(); // "Generator { }"

console.log(generator.next().value); // 0
console.log(generator.next().value); // 1
console.log(generator.next().value); // 2
// ...

仕様

仕様書
{{SpecName('ESDraft', '#sec-generator-objects', 'Generator objects')}}

ブラウザー実装状況

{{Compat("javascript.builtins.Generator")}}

関連情報