Mam funkcję:
function myfunction() {
if (a == 'stop') // How can I stop the function here?
}
Czy jest coś takiego jak exit()
w JavaScript?
javascript
Szymon
źródło
źródło
for
pętli. Nawet wtedy nie mam pojęcia, dlaczego proponowana metoda miałaby być używana, skoro można po prostu zadzwonićbreak;
. Aby skorzystać z przykładu z artykułu:if(i==5) break;
Użyciereturn
spowoduje zatrzymanie wykonywania funkcji, niezależnie od tego, czy jesteś wfor
pętli , czy nie .return
zatrzyma wykonywanie funkcji, która wydaje się być tym, o co prosiłeś.Odpowiedzi:
Możesz po prostu użyć
return
.Spowoduje to wysłanie wartości zwracanej
undefined
do dowolnej funkcji.Oczywiście możesz podać inną wartość zwracaną. Jakakolwiek wartość zostanie zwrócona, zostanie zarejestrowana w konsoli na powyższym przykładzie.
źródło
undefined
, i to właśnie zapewnia moje podstawowe rozwiązanie. Artykuł, do którego się odwołujesz, mówi o wykonywaniureturn false
w module obsługi zdarzeń jQuery. To zupełnie inna sprawa. To jest właściwy sposób na wyjście z funkcji JavaScript. Oczywiście, jeśli dzwoniący opiera się na zwracanej wartości, wartość tę należy odpowiednio zdefiniować.if(a != 'stop') { /* run my code */ }
taka, że kod działa tylko wtedy, gdya
nie jest równy,'stop'
bez podania wyraźnegoreturn
. Ale zwracana wartość jest identyczna z moim rozwiązaniem . W obu przypadkachundefined
zostaną zwrócone.undefined
(lub nie otrzyma innej wartości) jako wartość zwracaną, musisz dostosować się do specyfikacji tego interfejsu API i zwrócić poprawną wartość. Zasadniczo dla systemu obsługi zdarzeń oczekuje się, że będzieundefined
to proste wskazanie, że procedura obsługi zakończyła się i nie ma żadnych dalszych instrukcji. W jQueryreturn false;
ma specjalne znaczenie udzielając instrukcji, aby wykonaćpreventDefault
astopPropagation
.Najwyraźniej możesz to zrobić:
Zobacz zakresy bloków za pomocą etykiety: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label
Nie widzę jeszcze żadnych wad. Ale nie wydaje się to powszechnym zastosowaniem.
Pochodzi z tej odpowiedzi: JavaScriptowy odpowiednik die PHP
źródło
return false;
jest znacznie lepszy niż tylkoreturn;
źródło
false
lepiej Powiedziałbym, że domyślna opcjaundefined
jest lepsza w ogólnym przypadku. Tak czy inaczej, masz rację mówiąc, że często lepiej jest zwrócić znaczącą wartość.false
niżundefined
.To:
źródło
Używając nieco innego podejścia, możesz użyć
try catch
z instrukcją throw.źródło
jeśli szukasz skryptu, aby uniknąć przesyłania formularza po wykryciu błędów, ta metoda powinna działać
zmień typ przycisku Prześlij na „przycisk”
Mam nadzieję, że to pomoże.
źródło
Użycie a
return
spowoduje zatrzymanie funkcji i powrótundefined
lub wartość określoną za pomocą polecenia return.źródło
Nie lubię odpowiadać na rzeczy, które nie są prawdziwym rozwiązaniem ...
... ale kiedy napotkałem ten sam problem, przedstawiłem poniższe obejście:
Mam nadzieję, że może być przydatny dla każdego.
źródło
Myślę, że wyrzucenie nowego błędu jest dobrym podejściem do zatrzymania wykonania, a nie tylko zwrócenie lub zwrócenie wartości false. Np. Sprawdzam poprawność liczby plików, które zezwalam na przesłanie maksymalnie pięciu plików w osobnej funkcji.
Ale tę funkcję nazywam z głównej funkcji przepływu jako
W powyższym przykładzie nie mogę zatrzymać wykonywania, dopóki nie wyrzucę nowego błędu. Zwrócenie lub zwrócenie wartości false działa tylko wtedy, gdy jesteś w głównej funkcji wykonywania, w przeciwnym razie nie zadziała.
źródło
wyjście(); można użyć, aby przejść do następnej weryfikacji.
źródło
Jeśli używasz jquery. To powinno powstrzymać funkcję przed pojawieniem się bąbelków, więc funkcja nadrzędna wywołująca to również powinna przestać.
źródło
stopImmediatePropagation()
nie jest rzeczą jQuery, a zatrzymanie propagacji nie jest tym samym, co wyjście z funkcji.wpisz dowolne polecenie, które generuje błąd, na przykład:
lub
źródło