2010-10-23 5 views

risposta

414

elseif di JavaScript è nel formato "else if", per esempio:

if (condition) { 

} else if (other_condition) { 

} else { 

} 
+19

Quando le persone fanno domande come questa .. Penso che mostri un fondamentale fraintendimento. Con 'if' e' else' non c'è davvero bisogno di 'elseif'. – mpen

+10

@Mark, sono d'accordo ... ma a volte mi incasina perché sono abituato alle lingue che hanno un altro. So che è identico, ma mi chiedo quale sia la ragione di javascript per lasciarlo fuori. Sono contento, tuttavia, che non abbiano usato elif, perché è semplicemente sbagliato :) –

+13

@JayK: Haha .. PHP ha 'elseif', perl ha' elsif' (penso), e Python ha 'elif'. all'inizio mi ha dato fastidio, ma ... credo che sia carino. Tuttavia ha un leggero scopo in Python e PHP, perché altrimenti non funzionerebbe con la loro sintassi del colon. – mpen

44

Basta aggiungere uno spazio:

if (...) { 

} else if(...) { 

} else { 

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

Facile, utilizzare lo spazio

4

In realtà, ritengo che tecnicamente una volta rientrata correttamente dovrebbe essere:

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

Non c'è else if.

+1

Puoi, e dovresti, scrivere questo 'if (condition1) {...} else if (condition2) {...} else {...}'. – zwol

+3

Essenzialmente quando si usa 'else if' si sta omettendo il blocco opzionale' {...} '. Stavo facendo riferimento a [EMCAScript] (http://www.ecma-international.org/ecma-262/5.1/#sec-12.5) e [MDN] (https://developer.mozilla.org/en-US /docs/Web/JavaScript/Reference/Statements/if...else#Description) .. – skube

+7

In termini di grammatica formale della lingua, sei corretto, ma la tua risposta potrebbe dare alle persone l'impressione errata che 'else {if ...} 'è buono stile. – zwol

26

Si potrebbe usare questa sintassi che è funzionalmente equivalente:

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

Questo funziona perché ognuno condition sia pienamente valutata prima del confronto con il valore switch, in modo che il primo che restituisce true corrisponderà e la sua filiale volontà eseguire. Le succursali successive non verranno eseguite, a condizione che siate remember to use break.

Nota che rigoroso confronto viene utilizzato, in modo da un ramo cui condition è semplicemente "truthy" sarà non essere eseguito. È possibile trasmettere un valore di verità a true con doppia negazione: !!condition.

+0

Questo non è funzionalmente equivalente AFAIK. Quello che puoi mettere nelle condizioni è molto più limitato, e 'switch (true)' non ha nemmeno senso. – zwol

+2

Ammetto che all'inizio sembra strano ma è equivalente. La condizione può essere qualsiasi cosa tu voglia (comprese le chiamate di funzione o qualsiasi altra cosa) e se valuta "vero" allora quel caso sarà soddisfatto - esattamente come "else if". – Tamlyn

+4

Oh, capisco cosa stai facendo ora. È dannatamente intelligente. (Ho aggiunto un paragrafo che spiega come funziona, in modo da poter ritrattare il mio downvote.) – zwol

3

Le istruzioni condizionali vengono utilizzate per eseguire azioni diverse in base a condizioni diverse.

Usa if per specificare un blocco di codice da eseguire, se una condizione specificata è vera

Usa else per specificare un blocco di codice da eseguire, se la stessa condizione è falsa

Uso else if per specificare una nuova condizione da testare, se la prima condizione è falsa