Tengo un problema en JavaScript que estoy escribiendo en el que la instrucción Switch parece no funcionar como se esperaba.Declaración de cambio de JavaScript
switch (msg.ResultType) {
case 0:
$('#txtConsole').val("Some Val 0");
break;
case 1:
$('#txtConsole').val("Some Val 1");
break;
case 2:
$('#txtConsole').text("Some Val 2");
break;
}
El Tipo de resultado es un valor entero 0-2 y puedo verlo en FireBug. En todos los casos, el conmutador transfiere el control a la declaración de interrupción final, lo que significa que se omite por completo toda la lógica. ¿Qué me estoy perdiendo?
¡SIEMPRE especifique el segundo parámetro para analizar! Es la raíz, es muy probable que quieras: parseInt (msg.ResultType, 10); Si no lo proporciona, intentará adivinar la raíz y sucederán cosas horribles. – rmeador
Bueno, cosas horribles solo sucederán si pasa algo como 077, que se interpretará como octal (pero no 078, por ejemplo), o 0x10, pero en el segundo caso está bastante claro que tiene la base 16. De todos modos, agregando el radix explícitamente no duele, por lo que tampoco es una mala idea. –
En este caso, el radix no es necesario, aunque lo he usado solo para mayor claridad e integridad. No soy alguien que cree que el código es el mejor código. Los valores entrantes se definen en una enumeración en el lado del servidor y, por lo tanto, nunca estarán en un formato no estándar. –