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月.
return() は Generator インスタンスのメソッドで、ジェネレーターの本体内で、現在の停止位置に return 文が挿入されたかのように振る舞い、これによりジェネレーターが完了します。また、try...finally ブロックと組み合わせることで、ジェネレーターがクリーンアップ処理を実行することができるようにします。
返却する値です。
以下の 2 つのプロパティを持った Object です。
done論理値です。
引数として指定された値、または yield 式が try...finallyで囲まれている場合、finally ブロックから yield/return で返された値。
ジェネレーターが既に実行中である場合に発生します。
return() メソッドが呼び出されると、ジェネレーターの本体内で現在中断された位置に return value; 文が挿入されたかのように見なされます。ここで value は return() メソッドに渡された値です。したがって、通常のフローでは、return(value) を呼び出すと { done: true, value: value } が返されます。ただし、yield 式が try...finally ブロックで囲まれている場合、制御フローは関数本体から抜けず、代わりに finally ブロックに進みます。この場合、返される値は異なる可能性があり、finally ブロック内にさらに yield 式がある場合、done が false になることもあります。
次の例では簡単なジェネレーターと return メソッドを示します。
return(value) がすでに "完了" の状態のジェネレーターで呼び出されると、ジェネレーターは "完了" の状態のままになります。
引数が提供されなかった場合、返却されるオブジェクトの value プロパティは .next() の場合と同じになります。引数が提供された場合は、返却されるオブジェクトの value プロパティの値に設定されます。
return メソッドが呼び出された事実は、yield 式が try...finally ブロックで囲まれている場合にのみ、ジェネレーター自身で認識できます。
return メソッドが try ブロック内で一時停止されたジェネレーターに対して呼び出されると、ジェネレーター内の実行は finally ブロックに進みます。これは、try...finally 文では finally ブロックが常に実行されるためです。
finally ブロックの返値は、return 呼び出しから返される結果の value にもなります。
| ECMAScript® 2027 Language Specification # sec-generator.prototype.return |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2026年3月2日 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.