Sintaxe "elseif" em JavaScript

271

Isso está correto?

if(condition)
{

} 
elseif(condition)
{

}
else
{

}
Hari Gillala
fonte

Respostas:

507

O elseif do JavaScript está no formato "else if", por exemplo:

if (condition) {

} else if (other_condition) {

} else {

}
Jeff
fonte
28
Quando as pessoas fazem perguntas como essas ... acho que isso mostra um mal-entendido fundamental. Com ife elserealmente não há necessidade elseif.
MPEN
14
@ Mark, eu concordo ... mas às vezes me atrapalha porque estou acostumada a idiomas que têm um outroif. Eu sei que é idêntico, mas gostaria de saber qual é a razão do javascript para deixá-lo de fora. Fico feliz, no entanto, que eles não usaram elif, porque isso é errado :) #
384 Jay K Jay
16
@ JayK: Haha .. PHP tem elseif, perl tem elsif(eu acho), e Python elif.. isso meio que me incomodou no começo, mas ... acho que é meio fofo. Porém, ele serve a um pequeno propósito em Python e PHP, porque não funcionaria com a sintaxe dos dois pontos.
MPEN
6
@ Mark Mais mostra um mal-entendido de bracketing. Os colchetes não são necessários para if/ elseblocks, mas as pessoas são incentivadas a usá-los, para que eu possa entender por que isso parece incorreto para um novo usuário.
46
@ Mark Para alegar que nunca há um motivo para usar "else if" está incorreto. Caso contrário, se as instruções forem semelhantes a usar "switch", no entanto, permitirá comparações mais elaboradas. O switch, é claro, permite apenas comparações muito simples. Então, sim, definitivamente existem boas razões para usar o else se.
jolsen
49

Basta adicionar um espaço:

if (...) {

} else if (...) {

} else {

}
jMyles
fonte
33

Você pode usar esta sintaxe que é funcionalmente equivalente:

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

Isso funciona porque cada um conditioné totalmente avaliado antes da comparação com o switchvalor; portanto, o primeiro que avaliar trueserá correspondido e sua ramificação será executada. Ramificações subseqüentes não serão executadas, desde que você lembre-se de usarbreak .

Observe que a comparação estrita é usada; portanto, um ramo que conditionseja meramente "verdadeiro" não será executado. Você pode lançar um valor truthy para truecom dupla negação: !!condition.

Tamlyn
fonte
Isso não é funcionalmente equivalente ao AFAIK. O que você pode colocar nas condições é muito mais limitado e switch (true)nem faz sentido.
Zwol
2
Admito que parece estranho no começo, mas é equivalente. A condição pode ser o que você quiser (incluindo chamadas de função ou o que for) e, se for avaliada true, esse caso será atendido - exatamente como else if.
Tamlyn
5
Oh, eu vejo o que você está fazendo agora. Isso é muito inteligente. (I acrescentou um parágrafo explicando como ele funciona, para que eu pudesse retirar a minha downvote.)
Zwol
1
Esta é uma solução muito simples, limpo e elegante para listas de condição com mais de 1 "else if" condição
Steve Goossens
4
Não é completamente equivalente se as condições não retornarem booleanos, por exemplo, if([]) alert('a')produzem o alerta, mas switch(true){case []:alert('a')}não o fazem. Isso []ocorre porque é um valor verdadeiro, mas não é igual a true, como o @zwol explicou nesta edição .
Oriol
13

Na verdade, tecnicamente , quando recuado corretamente, seria:

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

Não há else if , estritamente falando.

(Atualização: Obviamente, como apontado, o item acima não é considerado bom estilo.)

skube
fonte
1
Você pode e deve escrever isso if (condition1) { ... } else if (condition2) { ... } else { ... }.
Zwol
4
Essencialmente, ao usar, else ifvocê está realmente omitindo o bloco opcional {...}. Eu estava referenciamento baseado em EMCAScript e MDN ..
Skube
13
Em termos de gramática formal do idioma, você está correto, mas sua resposta pode dar às pessoas a impressão incorreta de que else { if ... }é um bom estilo.
Zwol
1
O que Zwol disse. Existe o que você (skube) quis dizer ... E depois tem o que você disse.
precisa saber é o seguinte
6
if ( 100 < 500 ) {
   //any action
}
else if ( 100 > 500 ){
   //any another action
}

Fácil, use o espaço

IdemeNaHavaj
fonte
2

Instruções condicionais são usadas para executar ações diferentes com base em condições diferentes.

Use ifpara especificar um bloco de código a ser executado, se uma condição especificada for verdadeira

Usar else para especificar um bloco de código a ser executado, se a mesma condição for falsa

Use else ifpara especificar uma nova condição para testar, se a primeira condição for falsa

AA Noman
fonte
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') 
zloctb
fonte
0

Está faltando um espaço entre elseeif

Deve ser em else ifvez deelseif

if(condition)
{

} 
else if(condition)
{

}
else
{

}
codemirror
fonte