Sintaxis "elseif" en JavaScript

Respuestas:

507

JavaScript's elseif está en el formato "else if", por ejemplo:

if (condition) {

} else if (other_condition) {

} else {

}
Jeff
fuente
28
Cuando la gente hace preguntas como esta ... creo que muestra un malentendido fundamental. Con ify elserealmente no hay necesidad de elseif.
mpen
14
@ Mark, estoy de acuerdo ... pero a veces me confunde porque estoy acostumbrado a los idiomas que tienen otra cosa. Sé que es idéntico, pero me pregunto cuál es la razón de JavaScript para dejarlo fuera. Sin embargo, me alegra que no hayan usado elif, porque eso está mal :)
Jay K
16
@JayK: Jaja ... PHP tiene elseif, perl tiene elsif(creo), y Python tiene elif... eso me molestó al principio, pero ... supongo que es algo lindo. Sin embargo, tiene un pequeño propósito en Python y PHP, porque de lo contrario no funcionaría con su sintaxis de dos puntos.
mpen
66
@Mark Más muestra un malentendido de horquillado. Los corchetes no son necesarios para if/ elseblocks, pero se alienta a las personas a usarlos, por lo que puedo entender por qué esto parece incorrecto para un nuevo usuario.
46
@Mark Para afirmar que nunca hay una razón para usar "else if" es incorrecto. De lo contrario, si las declaraciones son similares al uso de "interruptor", sin embargo, permitirá comparaciones más elaboradas. Switch, por supuesto, permite solo comparaciones muy simples. Entonces sí, definitivamente hay buenas razones para usar else if.
jolsen
49

Solo agrega un espacio:

if (...) {

} else if (...) {

} else {

}
jMyles
fuente
33

Podría usar esta sintaxis que es funcionalmente equivalente:

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

Esto funciona porque cada uno conditionse evalúa completamente antes de la comparación con el switchvalor, por lo que el primero que evalúa truecoincidirá y su rama se ejecutará. Las ramas posteriores no se ejecutarán, siempre que recuerde usarbreak .

Tenga en cuenta que se utiliza una comparación estricta , por conditionlo que no se ejecutará una rama cuya mera "verdad" . Puede convertir un valor Truthy a truela doble negación: !!condition.

Tamlyn
fuente
Esto no es funcionalmente equivalente a AFAIK. Lo que puedes poner en las condiciones es mucho más limitado y switch (true)ni siquiera tiene sentido.
zwol
2
Admito que se ve raro al principio, pero es equivalente. La condición puede ser cualquier cosa que desee (incluidas las llamadas a funciones o lo que sea) y si se evalúa, truese cumplirá ese caso, exactamente igual else if.
Tamlyn
55
Oh, veo lo que estás haciendo ahora. Eso es bastante inteligente. (
Agregué
1
Esta es una solución muy simple, limpia y elegante para listas de condiciones con más de 1 condición "más si"
Steve Goossens
44
No es completamente equivalente si las condiciones no devuelven booleanos, por ejemplo, if([]) alert('a')produce la alerta pero switch(true){case []:alert('a')}no lo hace. Eso es porque []es un valor verdadero pero no igual a true, como explicó @zwol en esta edición .
Oriol
13

En realidad, técnicamente cuando se sangra correctamente, sería:

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

No hay else if, estrictamente hablando.

(Actualización: por supuesto, como se señaló, lo anterior no se considera un buen estilo).

skube
fuente
1
Puedes y debes escribir esto if (condition1) { ... } else if (condition2) { ... } else { ... }.
zwol
44
En esencia, al usarlo else if, en realidad está omitiendo el bloque opcional{...} . Estaba haciendo referencia a EMCAScript y MDN ..
skube
13
En términos de la gramática formal del idioma, está en lo correcto, pero su respuesta puede dar a la gente la impresión incorrecta de que else { if ... }es un buen estilo.
zwol
1
Lo que dijo zwol. Hay lo que usted (skube) quiso decir ... Y luego está lo que dijo.
Gerard ONeill
6
if ( 100 < 500 ) {
   //any action
}
else if ( 100 > 500 ){
   //any another action
}

Fácil, usa espacio

IdemeNaHavaj
fuente
2

Las declaraciones condicionales se utilizan para realizar diferentes acciones basadas en diferentes condiciones.

Utilizar if para especificar un bloque de código que se ejecutará, si una condición especificada es verdadera

Utilizar else para especificar un bloque de código que se ejecutará, si la misma condición es falsa

Use else ifpara especificar una nueva condición para probar, si la primera condición es falsa

AA Noman
fuente
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
fuente
0

Te falta un espacio entre elseyif

Debería ser en else iflugar deelseif

if(condition)
{

} 
else if(condition)
{

}
else
{

}
codemirror
fuente