2012-06-22 12 views
6

Tengo una declaración de mayúscula que no funciona. Revisé la entrada, es válida. Si el usuario es 1, pasa a los valores predeterminados. Si el usuario es cualquier número, se predetermina. ¿Qué pasa aquí? No sé javascript en absoluto.La caja del interruptor JS no funciona

switch (user) { 
case 1: 
    // stuff 
    break; 
case 2: 
    // more stuff 
    break; 
default: 
    // this gets called 
    break; 
} 
+1

¿Qué la variable 'user' contiene? ¿Un 'objeto' o un' int'? – user278064

+0

Es por eso que prefiero la tipificación fuerte :) –

+0

Chris, intente 'cambiar (~~ usuario)' – KingRider

Respuesta

16

Asegúrate de no estar mezclando cadenas y números enteros.
Probar: Tipo

switch (user) { 
    case "1": 
     // stuff 
     break; 
    case "2": 
     // more stuff 
     break; 
    default: 
     // this gets called 
} 
+0

'default' no es necesario' break' – KingRider

10

El problema es el tipo de datos no coincide. tipo de conversión de usuario a entero.

+0

¿Cómo? Pensé que todo lo que haces en js es var – Chris

4

moldeada de la variable de usuario a entero

switch (+user) { 
    case 1: .. // 
} 
2

, JavaScript es tipo-conscientes. Entonces '1' no es lo mismo que 1. En su caso, el "usuario" tiene que ser numérico, no la cadena. Puede echarlo por solo:

user = Number(user) 
Cuestiones relacionadas