2010-10-23 10 views

Odpowiedz

414

elseif obsługa JavaScript jest w formacie "else if", np:

if (condition) { 

} else if (other_condition) { 

} else { 

} 
+19

Kiedy ludzie zadają takie pytania .. Myślę, że to pokazuje fundamentalne nieporozumienie. Z 'if' i' else' naprawdę nie ma potrzeby 'elseif'. – mpen

+10

@ Mark, zgadzam się ... ale czasami mnie to psuje, ponieważ jestem przyzwyczajony do języków, które mają kogoś innego. Wiem, że to jest identyczne, ale zastanawiam się, jaki jest powód javascriptu, aby go pominąć. Cieszę się jednak, że nie skorzystali z elif, bo to po prostu zepsuło :) –

+13

@JayK: Haha .. PHP ma 'elseif', perl ma' elsif' (myślę), a Python ma 'elif'. To na początku mnie denerwowało, ale ... myślę, że to trochę urocze. Ma jednak niewielki cel w Pythonie i PHP, ponieważ w przeciwnym razie nie działałby ze składnią dwukropka. – mpen

44

Wystarczy dodać spację:

if (...) { 

} else if(...) { 

} else { 

} 
6
if (100 < 500) { 
    //any action 
} 
else if (100 > 500){ 
    //any another action 
} 

Łatwy, przestrzeń użycie

4

Właściwie myślę, że technicznie, kiedy właściwie wcięte, powinno być:

if (condition) { 
    ... 
} else { 
    if (condition) { 
     ... 
    } else { 
     ... 
    } 
} 

Brak numeru else if.

+1

Możesz i powinieneś napisać to 'if (warunek1) {...} else if (condition2) {...} else {...}'. – zwol

+3

Zasadniczo używając 'else if', w rzeczywistości pomijasz opcjonalny blok' {...} '. Odwoływałem się na podstawie [EMCAScript] (http://www.ecma-international.org/ecma-262/5.1/#sec-12.5) i [MDN] (https://developer.mozilla.org/en-US /docs/Web/JavaScript/Reference/Statements/if...else#Description) .. – skube

+7

Pod względem formalnej gramatyki języka, masz rację, ale twoja odpowiedź może dać ludziom błędne wrażenie, że 'else {if ...} 'to dobry styl. – zwol

26

Można użyć tej składni, która jest funkcjonalnie równoważne:

switch (true) { 
    case condition1: 
    //e.g. if (condition1 === true) 
    break; 
    case condition2: 
    //e.g. elseif (condition2 === true) 
    break; 
    default: 
    //e.g. else 
} 

To działa, ponieważ każdy condition jest w pełni ocenione przed porównaniu z wartością switch, więc pierwszym, który ocenia się true będzie pasował i jego oddział będzie wykonać. Kolejne gałęzie nie zostaną wykonane, pod warunkiem, że: remember to use break.

Zauważ, że ścisłe porównanie jest używany, więc oddział, którego condition jest jedynie „truthy” będzie nie być wykonywany. Możesz rzucić wartość truey do true z podwójną negacją: !!condition.

+0

To nie jest funkcjonalna odpowiednik AFAIK. To, co możesz umieścić w warunkach, jest znacznie bardziej ograniczone, a "switch (true)" nie ma nawet sensu. – zwol

+2

Przyznaję, że na początku wygląda dziwnie, ale jest to odpowiednik. Warunkiem może być cokolwiek, co lubisz (włączając w to wywołania funkcji lub cokolwiek innego) i jeśli będzie to miało wartość "prawda", wtedy ta sprawa zostanie spełniona - dokładnie tak jak "else if". – Tamlyn

+4

Och, widzę, co teraz robisz. To całkiem sprytnie sprytne. (Dodałem akapit wyjaśniający, jak to działa, aby móc wycofać moje zgłoszenie). – zwol

3

Instrukcje warunkowe służą do wykonywania różnych działań na podstawie różnych warunków.

Zastosowanie if określić blok kodu do wykonania, jeśli określony warunek jest spełniony

Zastosowanie else określić blok kodu do wykonania, jeśli ten sam warunek jest fałszywy

Zastosowanie else if aby określić nowy warunek do sprawdzenia, jeśli pierwszy warunek jest fałszywy