Angenommen, ich habe eine Schleife wie diese:
for (var i = 0; i < SomeArrayOfObject.length; i++) {
if (SomeArray[i].SomeValue === SomeCondition) {
var SomeVar = SomeArray[i].SomeProperty;
return SomeVar;
}
}
Kurze Frage: Stoppt das return
die Ausführung der Schleife an und für sich?
javascript
loops
return
frenchie
quelle
quelle
return
kehrt immer noch von der aktuellen Iteration des Funktionsrückrufs in seinem eigenen Bereich zurück, es ist jedoch nicht zu erwarten, dass die gesamte aufrufende Methode unterbrochen wirdforEach()
. Es kehrt also nicht von der Schleife selbst zurück , sondern von dem Rückruf, den die Schleife ausführt. Im Codebeispiel aus der verknüpften Frage1,2,4,5
überspringt die Ausgabe die3
wegen der Rückgabe.return
immer aus dem aktuellenthis
Kontext zurückkehren wird.break
und dannreturn
.In den meisten Fällen (einschließlich diesem)
return
wird sofort beendet. Befindet sich die Rückgabe jedoch in einemtry
Block mit einem zugehörigenfinally
Block, wird derfinally
immer ausgeführt und kann denreturn
in der "überschreiben"try
.quelle
Die
return
Anweisung stoppt eine Schleife nur, wenn sie sich innerhalb der Funktion befindet. Andernfalls wird folgende Fehlermeldung angezeigt:quelle
Dieser Code verlässt die Schleife nach der ersten Iteration in einer
for of
Schleife:Der folgende Code springt auf die Bedingung und setzt eine
for of
Schleife fort:quelle
Ja, sobald die
return
Anweisung ausgeführt wurde, wird die gesamte Funktion genau an diesem Punkt beendet.Stellen Sie sich vor, was passieren würde, wenn dies nicht der Fall wäre und die Schleife fortgesetzt und diese
return
Anweisung jedes Mal ausgeführt würde. Dies würde die Bedeutung der Rückgabe eines Werts ungültig machen, wenn Sie darüber nachdenken.quelle
Die Antwort lautet Ja. Wenn Sie eine return-Anweisung schreiben, kehren die Steuerelemente sofort zur Aufrufer-Methode zurück. Mit Ausnahme von finally block, das nach der return-Anweisung ausgeführt wird.
und kann schließlich auch den zurückgegebenen Wert überschreiben, wenn Sie innerhalb des finally-Blocks zurückkehren. LINK: Klärung versuchen, endlich zurückkehren
Definition der Rückgabeanweisung gemäß:
Java Docs:
MSDN-Dokumentation:
Wikipedia:
quelle
"return" beendet die Funktion zwar, aber wenn Sie große Datensummen zurückgeben möchten, können Sie diese in einem Array speichern und dann zurückgeben, anstatt zu versuchen, jedes Datenelement 1 zu 1 in der Schleife zurückzugeben.
quelle