{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*は別のジェネレータやイテラブルオブジェクトの値を現在のジェネレータに委譲するために使用されます。これにより、ジェネレータの合成や再利用が容易になります。

yieldが学べる書籍の紹介

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

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

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


関連するそのほかの単語

グローバルスコープ

コード全体から見える領域

種類: スコープとクロージャ

iterator

繰り返し処理のインターフェース

種類: ジェネレータ関数とイテレータ

匿名関数

名前のない関数

種類: 関数の種類

node_modules

インストールしたパッケージ保存先

種類: パッケージマネジメント関連

cloneNode()

要素の複製

種類: DOMの作成・変更・削除