Załóżmy, że mam taką pętlę:
for (var i = 0; i < SomeArrayOfObject.length; i++) {
if (SomeArray[i].SomeValue === SomeCondition) {
var SomeVar = SomeArray[i].SomeProperty;
return SomeVar;
}
}
Szybkie pytanie: czy return
samoczynnie wstrzymuje wykonywanie pętli?
javascript
loops
return
Francuz
źródło
źródło
return
nadal wraca z bieżącej iteracji funkcji zwrotnej w swoim własnym zakresie, ale nie oczekuje się, że przerwie działanie całej metody wywołującejforEach()
. Więc nie wraca z samej pętli , ale wraca z wywołania zwrotnego wykonywanego przez pętlę. W przykładzie kodu z pytania połączonego dane wyjściowe1,2,4,5
pomijają przyczynę3
zwrotu.return
że zawsze wróci z obecnegothis
kontekstu.break
czymreturn
.W większości przypadków (w tym ten),
return
zakończy się natychmiast. Jeśli jednak powrót znajduje się wtry
bloku z towarzyszącym mufinally
blokiem,finally
zawsze wykonuje i może „przesłonić” znakreturn
wtry
.źródło
return
Oświadczenie zatrzymuje pętlę tylko jeśli jest wewnątrz funkcji. W przeciwnym razie pojawi się ten błąd:źródło
Ten kod zakończy pętlę po pierwszej iteracji w
for of
pętli:poniższy kod wskoczy na warunek i będzie kontynuowany w
for of
pętli:źródło
Tak, kiedyś
return
instrukcji cała funkcja zostaje zakończona w tym momencie.Wyobraź sobie, co by się stało, gdyby tak się nie stało i kontynuował zapętlanie i wykonywanie tego
return
polecenia za każdym razem? Unieważniłoby to znaczenie zwracania wartości, kiedy o tym myślisz.źródło
Odpowiedź brzmi: tak, jeśli napiszesz instrukcję return, kontrolka natychmiast wróci do metody wywołującej. Z wyjątkiem ostatniego bloku, który jest wykonywany po instrukcji return.
i wreszcie może również przesłonić wartość, którą zwróciłeś, jeśli wrócisz do wnętrza ostatniego bloku. POŁĄCZYĆ: Wyjaśnienie dotyczące try-catch-last-return
Definicja instrukcji zwrotu zgodnie z:
Dokumenty Java:
Dokumentacja MSDN:
Wikipedia:
źródło
„return” nie wychodzi z funkcji, ale jeśli chcesz zwrócić duże sumy danych, możesz zapisać je w tablicy, a następnie zwrócić, zamiast próbować zwracać każdy fragment danych w pętli 1 na 1.
źródło