2012-01-29 11 views
14

Czy skrótu javascript dla if-else może wyjść z funkcji? Jeśli tak, to jak to działa.Skrót JavaScript jeśli-else i powracający

np. mam to:

if(boolean){ 
return; 
} 

i chciałbym napisać jak to:

(value)? return; 

Chrome skarży się, że powrót jest nieoczekiwane. Czy mimo to napisać coś takiego, aby było ważne?

+2

To nie jest stenografia jeśli-else.Jest to zupełnie inna konstrukcja i taka, która nie jest odpowiednia do tego zadania. –

+3

Naprawdę przykro, że to nie działa: 'someVal && return;'. Console mówi "nieoczekiwany zwrot tokena". –

Odpowiedz

24

Nie, nie możesz tego zrobić, dopóki nie zwrócisz wartości. Na przykład, jeśli funkcja musiała zwrócić wartość mogłeś napisane:

return boolean ? 'foo' : 'bar'; 

Ale nie można przerwać wykonywanie funkcji przez powrocie pustkę za pomocą operatora warunkowego.

1

Chcesz zrobić ternary operator

który brzmi:

(bool) ? ifTrue : ifFalse; 

Uwaga: nie można pominąć część innego operatora z potrójnym.

http://en.wikipedia.org/wiki/Ternary_operation

+0

Nie sądzę, że rozumiesz, co właściwie "długa" wersja kodu * wykonała * ... – Shog9

+2

Nie, rozumiem. Wygląda jednak na to, że próbował użyć operatora trójskładnikowego i próbował zmusić go, by zachowywał się tak, jak to sobie wyobrażał swoim oryginalnym "długim" stwierdzeniem. Gdyby po prostu chciał użyć instrukcji "sans-curly", mógł to powiedzieć. * wzruszenie ramion * – Kristian

9

Jeśli zamierzają powrócić z funkcją w tym momencie w jego realizacji niezależnie czy test ocenia prawdziwe lub fałszywe, można użyć,

return (value) ? 1 : 2; 

ale jeśli tylko chcesz wrócić wcześniej, gdy test oceni prawdę (na przykład, jako kontrola poprawności, aby uniemożliwić wykonanie, gdy parametry są nieprawidłowe), najkrótszą z nich możesz wykonać:

if (boolean) return; 
+2

Tylko druga faktycznie zachowuje się identycznie jak pierwszy przykład w pytaniu. Z pewnością jest jednak krótsza - dobra ilustracja tego, jak niewolniczo, w tym aparaty ortodontyczne i nowe linie, może doprowadzić do chęci strzelenia sobie w stopę! – Shog9

+0

Dobra edycja @ Shog9, zawsze brak mi słów. –

0

Warunkowy operator trójskładnikowy (condition ? expression to evaluate when true : expression to evaluate when false) jest często używany do prostego warunkowego przypisania zmiennych.

jeśli trzeba:

if(x > 0) { 
    a = 10; 
}else{ 
    a = 30; 
} 

można napisać:

a = (x>0)? 10 : 30; 

Można myśleć o nim jak o prostej funkcji, która trwa 3 parametry (P1, P2, P3), jeśli p1 to prawda, że ​​zwraca p2, a jeśli p1 jest fałszywe, to zwraca p3.

(p1)? p2 : p3; 

I jak takiej funkcji, nie ma sposobu na to, aby spowodować, że rodzic funkcję aby powrócić na podstawie warunku. Jest to zatem , a nie dlatego skrótem dla/if.

3
if(boolean) return; 

Pojedyncza linia, czytelna, całkowicie poprawna;