Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2016年9月.
yield 演算子は、ジェネレーター関数を一時停止したり再開したりするために使用します。
イテレータープロトコル経由でジェネレーター関数が生成する値を定義します。省略した場合、代わりに undefined が生成されます。
ジェネレーターの next() メソッドに渡されたオプションの値を返し、その実行を再開します。
メモ: つまり、next() は非対称です。常に値を現在中断されている yield に送信しますが、次の yield のオペランドを返します。最初の next() 呼び出しに渡された引数は、現在中断されている yield が存在しないため取得できません。
yield キーワードは、ジェネレーター関数の実行を一時停止し、ジェネレーターの呼び出し元に yield キーワードに続く値を返します。これは、 return キーワードのジェネレーター版と考えることができます。
yield はそれを含むジェネレーター関数の中で直接呼び出すことしかできません。呼び出し先の関数から呼び出すことはできません。
ジェネレーター関数を呼び出すと、Generator オブジェクトが構築されます。このジェネレーターの next() メソッドが呼び出されるたびに、ジェネレーターは実行を再開し、次のいずれかに達するまで実行を続けます。
yield 式で一時停止すると、ジェネレーターのコード実行は、ジェネレーターの next() メソッドが再度呼び出されるまで停止したままになります。ジェネレーターの next() メソッドにオプションの値が渡された場合、その値はジェネレーターの現在の yield 操作によって返される値となります。最初の next() 呼び出しには、対応する中断された yield 操作が持たないため、最初の next() 呼び出しで渡された引数を取得する方法はありません。
ジェネレーターの return() または throw() メソッドが呼び出された場合、 return 文または throw 文が一時停止した yield 式で実行されたかのように動作します。ジェネレーター関数本体内で try...catch...finally を使用することができます。 return() または throw() メソッドが呼び出された場合、保留中の yield 式が存在しない場合(next() がまだ呼び出されていないか、ジェネレーターが既に完了しているため)、早期完了は処理できず、ジェネレーターは常に終了します。
次のコードはジェネレーター関数の定義例です。
ジェネレーター関数が定義されると、ご覧のようにイテレーターを構築するために使用されます。
ジェネレーターには next(value) で値を渡すこともできます。step は yield 式の返値として評価します。ただし、next() が最初の時点で呼び出された際にジェネレーターの next() メソッドに渡された値は無視されます。
| ECMAScript® 2027 Language Specification # prod-YieldExpression |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2025年9月16日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.