{category}

JavaScript - 関数の種類

ジェネレータ関数

ジェネレータかんすう(関数

意味 途中で停止可能な関数


ジェネレータ関数とは?

関数の実行を途中で停止し、再開することができる関数。`function*`という構文で定義される。

ジェネレータ関数の具体的な使い方

基本的なジェネレータ関数の例

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

const generator = countToThree();

console.log(generator.next().value);
console.log(generator.next().value);
console.log(generator.next().value);
console.log(generator.next().done);

👇出力結果

1
2
3
true

この例では、1から3までカウントアップするジェネレータ関数を定義しています。next()メソッドを呼び出すたびに、次の値が生成されます。最後のnext()呼び出しでは、ジェネレータが完了したことを示すdoneプロパティがtrueになります。

無限シーケンスを生成するジェネレータ関数

function* infiniteSequence() {
  let i = 0;
  while (true) {
    yield i++;
  }
}

const generator = infiniteSequence();

console.log(generator.next().value);
console.log(generator.next().value);
console.log(generator.next().value);
// これは無限に続きますが、必要な時に停止できます

👇出力結果

0
1
2

この例では、無限に続く整数のシーケンスを生成するジェネレータ関数を定義しています。必要な数だけnext()を呼び出すことで、値を取得できます。メモリ効率が良く、必要なときだけ値を生成できます。

ジェネレータ関数に関するよくある質問

Q. ジェネレータ関数の特徴は?
A. ジェネレータ関数は実行を一時停止し、後で再開できる特殊な関数です。yieldキーワードを使って値を生成し、必要に応じて処理を中断できます。
Q. ジェネレータ関数の使用例は?
A. 大量のデータを扱う際のメモリ効率の向上、非同期処理の制御、無限シーケンスの生成などに使用されます。
Q. for...ofとの組み合わせは?
A. ジェネレータはイテラブルなので、for...of文と組み合わせて使用できます。例:for (let value of generator()) { console.log(value); }
Q. yieldとreturnの違いは?
A. yieldは一時的に値を返し、関数の実行を中断します。returnはジェネレータを終了させ、最後の値を返します。

ジェネレータ関数が学べる書籍の紹介

「プログラミング単語帳」を使って、プログラミングの単語を英単語のように学習してみませんか?
プログラミング単語帳には、JavaScriptのジェネレータ関数や引数、高階関数、apply、などのような実務でよく使われる単語が数百以上収録されています。
この書籍には、プログラミングの単語の意味や読み方、単語の使い方がわかる例文などが掲載されており、いつでもどこでもプログラミングの学習ができます。

よく使われる単語にだけ絞って学習することができるので、効率的にプログラミングが学習できます。

1日5分の暗記でプログラミンが身に付く!プログラミング単語帳 公式ストアで発売中!

HTML編、CSS編、JavaScript編、PHP編、Ruby編、その他単語編の6シリーズ分が公式ストアにて販売中です。気になった方はぜひ購入してみてください。


JavaScriptを学べる「プログラミング単語帳」アプリ

プログラミング単語帳がアプリになりました!JavaScriptはもちろん、10種類のプログラミング言語の中から、よく使われる単語をスマホで学習できます。

収録単語は2,000単語以上!
現在は、HTML、CSS、JavaScirpt、PHP、Laravel、Ruby、Python、MySQL、Linux、など10カテゴリーの単語帳が1つのアプリに収録されています。

いつでも、どこでも、隙間時間を有効活用して、プログラミングを効率的に学べるので、ぜひダウンロードしてみてください。

2024年7月アップデート情報:「Laravel」カテゴリーが追加されましました!

2024年8月アップデート情報:「MySQL」「Linux」カテゴリーが追加されましました!


関連するそのほかの単語

引数

呼び出す関数で使用する材料

種類: パラメータと引数

高階関数

関数を操作する関数

種類: コールバックと高階関数

apply

配列を引数として関数実行

種類: 関数の実行コンテキスト

date.getDate()

日を取得(1-31)

種類: Date

Object.defineProperty()

プロパティを設定

種類: Object