Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. JavaScript-Referenz
  4. Eingebaute Standardobjekte
  5. Generator
  6. return()

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.

View in EnglishAlways switch to English

Generator.prototype.return()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨September 2016⁩.

Diereturn()-Methode vonGenerator-Instanzen wirkt, als ob einereturn-Anweisung an der aktuellen angehaltenen Position im Körper des Generators eingefügt wird. Dies beendet den Generator und ermöglicht es dem Generator, jede notwendige Bereinigungsaufgabe durchzuführen, wenn sie mit einemtry...finally-Block kombiniert wird.

Syntax

js
generatorInstance.return()generatorInstance.return(value)

Parameter

valueOptional

Der zurückzugebende Wert.

Rückgabewert

EinObject mit zwei Eigenschaften:

done

Ein boolescher Wert:

  • true, wenn der Kontrollfluss der Generatorfunktion das Ende erreicht hat.
  • false, wenn der Kontrollfluss der Generatorfunktion das Ende noch nicht erreicht hat und noch weitere Werte erzeugen kann. Dies kann nur passieren, wenn dasreturn in einemtry...finally eingefangen wird und es mehryield-Ausdrücke imfinally-Block gibt.
value

Der als Argument angegebene Wert oder, wenn deryield-Ausdruck in einemtry...finally eingeschlossen ist, der Wert, der imfinally-Block ausgegeben/zurückgegeben wird.

Ausnahmen

TypeError

Wird ausgelöst, wenn der Generator bereits läuft.

Beschreibung

Diereturn()-Methode kann beim Aufruf gesehen werden, als ob einereturn value;-Anweisung im Körper des Generators an der aktuellen angehaltenen Position eingefügt wird, wobeivalue der an diereturn()-Methode übergebene Wert ist. Daher wird im typischen Ablauf durch Aufrufen vonreturn(value){ done: true, value: value } zurückgegeben. Ist jedoch deryield-Ausdruck in einemtry...finally-Block eingeschlossen, verlässt der Kontrollfluss nicht den Funktionskörper, sondern fährt imfinally-Block fort. In diesem Fall kann der zurückgegebene Wert unterschiedlich sein unddone kann sogarfalse sein, wenn es mehryield-Ausdrücke imfinally-Block gibt.

Beispiele

Verwendung von return()

Das folgende Beispiel zeigt einen Generator und diereturn-Methode.

js
function* gen() {  yield 1;  yield 2;  yield 3;}const g = gen();g.next(); // { value: 1, done: false }g.return("foo"); // { value: "foo", done: true }g.next(); // { value: undefined, done: true }

Wennreturn(value) auf einen Generator aufgerufen wird, der sich bereits im "abgeschlossenen" Zustand befindet, bleibt der Generator im "abgeschlossenen" Zustand.

Wenn kein Argument bereitgestellt wird, ist dievalue-Eigenschaft des zurückgegebenen Objektsundefined. Wird ein Argument bereitgestellt, wird es zum Wert dervalue-Eigenschaft des zurückgegebenen Objekts, es sei denn, deryield-Ausdruck ist in einemtry...finally eingeschlossen.

js
function* gen() {  yield 1;  yield 2;  yield 3;}const g = gen();g.next(); // { value: 1, done: false }g.next(); // { value: 2, done: false }g.next(); // { value: 3, done: false }g.next(); // { value: undefined, done: true }g.return(); // { value: undefined, done: true }g.return(1); // { value: 1, done: true }

Verwendung von return() mit try...finally

Die Tatsache, dass diereturn-Methode aufgerufen wurde, kann dem Generator nur bekannt gemacht werden, wenn deryield-Ausdruck in einemtry...finally-Block eingeschlossen ist.

Wenn diereturn-Methode auf einen Generator aufgerufen wird, der innerhalb einestry-Blocks angehalten ist, wird die Ausführung im Generator zumfinally-Block fortgesetzt — da derfinally-Block dertry...finally-Anweisungen immer ausgeführt wird.

js
function* gen() {  yield 1;  try {    yield 2;    yield 3;  } finally {    yield "cleanup";  }}const g1 = gen();g1.next(); // { value: 1, done: false }// Execution is suspended before the try...finally.g1.return("early return"); // { value: 'early return', done: true }const g2 = gen();g2.next(); // { value: 1, done: false }g2.next(); // { value: 2, done: false }// Execution is suspended within the try...finally.g2.return("early return"); // { value: 'cleanup', done: false }// The completion value is preservedg2.next(); // { value: 'early return', done: true }// Generator is in the completed stateg2.return("not so early return"); // { value: 'not so early return', done: true }

Der Rückgabewert des finally-Blocks kann auch zumvalue des Ergebnisses werden, das von demreturn-Aufruf zurückgegeben wird.

js
function* gen() {  try {    yield 1;  } finally {    return "cleanup";  }}const generator = gen();generator.next(); // { value: 1, done: false }generator.return("early return"); // { value: 'cleanup', done: true }

Spezifikationen

Specification
ECMAScript® 2026 Language Specification
# sec-generator.prototype.return

Browser-Kompatibilität

Siehe auch

Help improve MDN

Learn how to contribute Diese Seite wurde automatisch aus dem Englischen übersetzt.

[8]ページ先頭

©2009-2025 Movatter.jp