instrucción de cambio – cadena frente a int

Tengo esta línea de javascript en un controller de events:

var value = event.currentTarget.value; //example: 9 

que luego uso en una statement de cambio.

 switch (value) { case 9: return 12; case 12: return 9; } 

El problema es que "valor" es una cadena en lugar de una int.

¿Debo simplemente lanzar esto a un int?

¿O hay una forma de get el valor como int, como decir con jQuery ()?

¿O debería simplemente usar cadenas en la statement de cambio?

¿O hay una forma de get el valor como int, como decir con jQuery ()?

Por supuesto, esto es casi siempre una function proporcionada en un idioma o entorno. En JavaScript, hay cuatro forms:

  1. parseInt analizará la cadena como un número integer. value = parseInt(value, 10) lo analizará como decimal (por ej., base 10, el sistema numérico que la mayoría de nosotros usamos). Tenga en count que parseInt analizará el número que encuentra al comienzo de la cadena, haciendo caso omiso de todo lo que le sigue. Entonces parseInt("1blah", 10) es 1 .

  2. parseFloat analizará la cadena como un número potencialmente fraccionario (como 1.2 ), si la cadena contiene un punto decimal. Siempre funciona en la base 10.

  3. La function Number : value = Number(value) . Eso espera que toda la cadena sea un número, y averigua qué base numérica es mirando la cadena: el valor pnetworkingeterminado es decimal, pero si comienza con 0x se analiza como hexadecimal (base 16), y en algunos motores sueltos modo si comienza con 0 se analiza como octal (base 8). No hay forma de obligarlo a usar una base numérica particular.

  4. Fuerza al motor a convertirlo implícitamente mediante la aplicación de un operador matemático; el habitual es + . Entonces: value = +value . Eso hace lo mismo value = Number(value) does. Curiosamente, tiende a ser más lento que el Number en algunos motores, pero no lo suficiente como para importar.

Ejemplos: Live Copy

 parseInt("15", 10): 15 parseFloat("15"): 15 Number("15"): 15 +"15": 15 parseInt("1.4", 10): 1 parseFloat("1.4"): 1.4 Number("1.4"): 1.4 +"1.4": 1.4 parseInt("10 nifty things", 10): 10 parseFloat("10 nifty things"): 10 Number("10 nifty things"): NaN +"10 nifty things": NaN 

Uso simple +value , Aviso + delante de una variable con convierte la variable en un número

 switch (+value) { case 9: return 12; case 12: return 9; } 

Prueba este. parseInt() analiza una cadena y devuelve un integer.

 var value = parseInt(event.currentTarget.value, 10);