Generator
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.
Generator
オブジェクトはジェネレーター関数によって返され、反復可能プロトコルとイテレータープロトコルの両方に準拠しています。
試してみましょう
const foo = function* () {
yield "a";
yield "b";
yield "c";
};
let str = "";
for (const val of foo()) {
str = str + val;
}
console.log(str);
// Expected output: "abc"
コンストラクター
このオブジェクトを直接インスタンス化することはできません。代わりに、ジェネレーター関数から Generator
のインスタンスを返すことができます。
function* generator() { yield 1; yield 2; yield 3; } const gen = generator(); // "Generator { }"
インスタンスメソッド
Generator.prototype.next()
-
yield
式で得られた値を返します。 Generator.prototype.return()
-
与えられた値を返し、ジェネレーターを終了します。
Generator.prototype.throw()
-
ジェネレーターにエラーを投げます。(そのジェネレーターの中からキャッチされない限り、ジェネレーターも終了します)
例
無限イテレーター
js
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
// ...
仕様
Specification |
---|
ECMAScript® 2025 Language Specification # sec-generator-objects |
ブラウザー実装状況
Report problems with this compatibility data on GitHubLegend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.