Sintassi "elseif" in JavaScript


Risposte:


507

L'altro JavaScript è nel formato "else if", ad esempio:

if (condition) {

} else if (other_condition) {

} else {

}

28
Quando le persone fanno domande come questa .. Penso che mostri un malinteso fondamentale. Con ife elsenon ce n'è davvero bisogno elseif.
mpen

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

16
@JayK: Haha .. PHP ha elseif, perl ha elsif(penso), e Python ha elif.. quel tipo di mi ha infastidito all'inizio, ma ... immagino sia piuttosto carino. Tuttavia ha un leggero scopo in Python e PHP, altrimenti non funzionerebbe con la loro sintassi del colon.
Aprire il

6
@Mark Mostra di più un fraintendimento del bracketing. Le parentesi non sono necessarie per if/ elseblocchi, ma le persone sono incoraggiate a usarle, quindi posso capire perché questo non sembra corretto per un nuovo utente.

46
@Mark Per affermare che non c'è mai un motivo per usare "else if" non è corretto. Altrimenti se le istruzioni sono simili all'utilizzo di "switch", tuttavia consentirà confronti più elaborati. Switch, ovviamente, consente solo confronti molto semplici. Quindi sì, ci sono sicuramente buoni motivi per usare altro se.
Jolsen,

49

Aggiungi uno spazio:

if (...) {

} else if (...) {

} else {

}

33

È possibile utilizzare 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 conditionviene valutato completamente prima del confronto con il switchvalore, quindi il primo che valuta truecorrisponderà e il suo ramo verrà eseguito. I rami successivi non verranno eseguiti, a condizione che si ricordi di utilizzarebreak .

Si noti che viene utilizzato un confronto rigoroso , quindi un ramo la cui conditionverità è "verità" non verrà eseguito. È possibile inserire un valore truthy a truecon doppia negazione: !!condition.


Questo non è AFAIK funzionalmente equivalente. 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 ti piaccia (comprese le chiamate di funzione o qualsiasi altra cosa) e se si valuta trueallora quel caso sarà soddisfatto - esattamente come else if.
Tamlyn,

5
Oh, vedo cosa stai facendo ora. È dannatamente intelligente. (Ho aggiunto un paragrafo che spiega come funziona, in modo da poter ritirare il mio
voto negativo

1
Questa è una soluzione molto semplice, pulita ed elegante per elenchi di condizioni con più di 1 condizione "else if"
Steve Goossens,

4
Non del tutto equivalente se le condizioni non restituiscono valori booleani, ad esempio if([]) alert('a')produce l'avviso ma switch(true){case []:alert('a')}non lo fanno. Questo perché []è un valore veritiero ma non uguale a true, come spiegato da @zwol in questa modifica .
Oriol,

13

In realtà, tecnicamente se rientrato correttamente, sarebbe:

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

Non c'è else if, a rigor di termini.

(Aggiornamento: ovviamente, come sottolineato, quanto sopra non è considerato un buon stile.)


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

4
In sostanza, quando si utilizza, else ifsi sta omettendo il blocco opzionale {...}. Mi riferivo basato su EMCAScript e MDN ..
skube,

13
In termini di grammatica formale della lingua, hai ragione, ma la tua risposta potrebbe dare alla gente l'impressione errata di un else { if ... }buon stile.
zwol,

1
Cosa ha detto zwol. C'è quello che tu (skube) intendevi .. E poi c'è quello che hai detto.
Gerard ONeill,

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

Facile, usa lo spazio


2

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

Utilizzare ifper specificare un blocco di codice da eseguire, se una condizione specificata è vera

Utilizzare elseper specificare un blocco di codice da eseguire, se la stessa condizione è falsa

Utilizzare else ifper specificare una nuova condizione da verificare, se la prima condizione è falsa


1
x = 10;
if(x > 100 ) console.log('over 100')
else if (x > 90 ) console.log('over 90')
else if (x > 50 ) console.log('over 50')
else if (x > 9 ) console.log('over 9')
else console.log('lower 9') 

0

Manca uno spazio tra elseeif

Dovrebbe essere else ifinvece dielseif

if(condition)
{

} 
else if(condition)
{

}
else
{

}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.