2010-10-23 20 views

Respuesta

414

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

if (condition) { 

} else if (other_condition) { 

} else { 

} 
+19

Cuando la gente hace preguntas como esta ... Creo que muestra un malentendido fundamental. Con 'if' y' else' no hay necesidad de 'elseif'. – mpen

+10

@Mark, estoy de acuerdo ... pero a veces me confunde porque estoy acostumbrado a los idiomas que tienen un elseif. Sé que es idéntico, pero me pregunto cuál es el motivo de Javascript para omitirlo. Me alegro, sin embargo, de que no usaron elif, porque eso simplemente está mal :) –

+13

@JayK: Jaja ... PHP tiene 'elseif', perl tiene' elsif' (creo), y Python tiene 'elif'. . Eso me molestaba al principio, pero ... Creo 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

44

Sólo tiene que añadir un espacio:

if (...) { 

} else if(...) { 

} else { 

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

Fácil, espacio de uso

4

En realidad, creo que técnicamente, cuando está sangrado correctamente, debería ser:

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

No hay else if.

+1

Puede, y debe, escribir este 'if (condition1) {...} else if (condition2) {...} else {...}'. – zwol

+3

En esencia, cuando se utiliza 'else if', en realidad se está omitiendo el bloque opcional' {...} '. Me refería basado en [EMCAScript] (http://www.ecma-international.org/ecma-262/5.1/#sec-12.5) y [MDN] (https://developer.mozilla.org/en-US /docs/Web/JavaScript/Reference/Statements/if...else#Description) .. – skube

+7

En términos de la gramática formal del lenguaje, tiene razón, pero su respuesta podría dar a la gente la impresión incorrecta de que 'else {if ...} 'es un buen estilo. – zwol

26

Usted podría utilizar 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 condition está completamente evaluados antes de la comparación con el valor switch, por lo que el primero que se evalúa como true coincidirá y su sucursal ejecutar. Las sucursales subsiguientes no se ejecutarán, siempre que sea remember to use break.

Tenga en cuenta que se utiliza estricta comparación, por lo que una sucursal cuya condition es meramente "Truthy" se no se ejecutará. Puede emitir un valor de verdad a true con doble negación: !!condition.

+0

Esto no es funcionalmente equivalente 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 como 'verdadera ', se cumplirá ese caso, exactamente como' else if'. – Tamlyn

+4

Oh, ya veo lo que estás haciendo ahora. Eso es bastante inteligente. (Agregué un párrafo explicando cómo funciona, para poder retractarme). – zwol

3

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

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

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

Uso else if para especificar una nueva condición para probar, si la primera condición es falsa

Cuestiones relacionadas