{category}

JavaScript - ジェネレータ関数とイテレータ

yield

イールド(関数

意味 関数の一時停止/値返却


yieldとは?

ジェネレータ関数内で使用され、関数の実行を一時的に中断し、値を外部に返すためのキーワードです。

yieldの具体的な使い方

yieldを使用して複数の値を生成する例

function* colorGenerator() {
  yield '赤';
  yield '青';
  yield '黄';
}

const colors = colorGenerator();

console.log(colors.next().value);
console.log(colors.next().value);
console.log(colors.next().value);
console.log(colors.next().value);

👇出力結果

赤
青
黄
undefined

このジェネレータ関数は3つの色を順番に生成します。next()メソッドを呼び出すたびに、次のyield文まで実行が進み、その値が返されます。

yield*を使用したジェネレータの委譲

function* gen1() {
  yield 'a';
  yield 'b';
}

function* gen2() {
  yield* gen1();
  yield 'c';
}

const iterator = gen2();

for (let value of iterator) {
  console.log(value);
}

👇出力結果

a
b
c

yield*を使用すると、別のジェネレータの値を現在のジェネレータに委譲できます。この例では、gen2がgen1の値を委譲し、その後に自身の値を生成しています。

yieldに関するよくある質問

Q. yieldの主な役割は?
A. yieldの主な役割は、ジェネレータ関数の実行を一時停止し、指定した値を呼び出し元に返すことです。これにより、関数の状態を保持したまま、値を段階的に生成することができます。
Q. yieldとreturnの違いは?
A. yieldは関数の実行を一時停止し、後で再開できますが、returnは関数の実行を完全に終了します。yieldは複数回使用できますが、returnは関数内で一度しか使用できません。
Q. yield*の使用目的は?
A. yield*は別のジェネレータやイテラブルオブジェクトの値を現在のジェネレータに委譲するために使用されます。これにより、ジェネレータの合成や再利用が容易になります。

JavaScriptを勉強するのにおすすめな問題集アプリの紹介

楽しくプログラミングを学ぶことで、プログラミングの理解度が深まります。『JavaScript問題集』は、楽しくJavaScriptを学ぶのに最適なアプリです。AIが出題する問題に答えていくことで、自然とJavaScriptの理解度が深まります。

AppStoreからダウンロード:https://apps.apple.com/jp/app/id6737941570

JavaScript問題集

JavaScriptのyieldについても学べる書籍の紹介

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

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

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」カテゴリーが追加されましました!


関連するそのほかの単語

引数

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

種類: パラメータと引数

function

処理のまとまりを定義

種類: 基本的な関数の構造

ジェネレータ関数

途中で停止可能な関数

種類: 関数の種類

タスクキュー

後で実行するタスク

種類: イベントループとタスクキュー

ターゲットフェーズ

イベントの対象段階

種類: イベントの伝播