2012-06-13 21 views
7

Duplicar posible:
Is it safe to assume strict comparison in a Javascript switch statement?javascript switch/case: ¿se comparan los tipos?

¿Una sentencia switch/case en javascript comparar tipos o sólo los valores?

En otras palabras, cuando tengo el siguiente código:

switch (variable) 
{ 
    case "0": [...] break; 
    case "1": [...] break; 
    default: [...] break; 
} 

¿es equivalente a

if (variable == "0") 
{ 
    [...] 
} 
else if (variable == "1") 
{ 
    [...] 
} 
else 
{ 
    [...] 
} 

o para

if (variable === "0") 
{ 
    [...] 
} 
else if (variable === "1") 
{ 
    [...] 
} 
else 
{ 
    [...] 
} 

edición: ¿hay una manera de forzar comparar valores y tipos a la vez?

+8

Usted puede probar fácilmente ... – gdoron

+3

Sí, habría tomado menos tiempo para escribir en un jsFiddle que lo hizo para escribir la pregunta :-) – Pointy

+0

@amnotiam . Cómo los encontraste...? ¿lo has visto antes? – gdoron

Respuesta

9

Sí, se comparan los tipos.

Si la entrada es igual a clauseSelector como se define por el operador ===, entonces conjunto encontrado a verdadero.

ECMA-262, página 95.

1

Se comprueba tipos, así,

Ejemplo:

var x = false; 

switch (x) { 
case "": 
    alert('x'); /// Not happening 
    break; 
case false: 
    alert('y'); // happen 
    break; 
}​ 

Live DEMO

Y como la especificación dice:

Si la entrada es igual a clauseSelector como se define por la === operador, entonces ...

Cuestiones relacionadas