ジェネレータ関数は、functionキーワードの後にアスタリスク(*)を付けて宣言されます。関数内でyield文を使用することで、値を生成することができます。例えば、以下のコードは、1から5までの数値を順番に生成するジェネレータ関数です。
function* numberGenerator() {
yield 1;
yield 2;
yield 3;
yield 4;
yield 5;
}
このジェネレータ関数を実行すると、順番に値が生成されます。以下のコードは、ジェネレータ関数から値を取得し、コンソールに出力する例です。
const generator = numberGenerator();
console.log(generator.next().value); // 1
console.log(generator.next().value); // 2
console.log(generator.next().value); // 3
console.log(generator.next().value); // 4
console.log(generator.next().value); // 5
return文は、ジェネレータ関数内で使用することもできます。return文を使用すると、ジェネレータ関数から値を返し、関数の実行を終了させることができます。以下のコードは、ジェネレータ関数内でreturn文を使用した例です。
function* numberGenerator() {
yield 1;
yield 2;
yield 3;
return 4;
yield 5; // この行は実行されません
}
上記のコードでは、return文によって値4が返され、ジェネレータ関数の実行が終了します。したがって、4以降のyield文は実行されません。
以上が、JavaScriptのジェネレータ関数とreturn文の基本的な使用方法です。これを参考にして、自身でさまざまなジェネレータ関数を作成してみてください。