Hay tres tipos de cinco métodos para convertir datos en números en JS, que incluyen:
•Coerción, los tipos de datos básicos de JS se convierten en los tipos correspondientes (Número(v)) de esta manera
•Funciones nativas, estas dos funciones tienen resultados diferentes (parseInt(v,radix), parseFloat(v))
•Conversión implícita, JS convertirá la variable al tipo correspondiente (cálculo de bits, cálculo matemático) durante la ejecución.
Los valores originales convertidos también se pueden dividir simplemente en tres categorías: objetos, valores especiales y cadenas.
Los valores especiales en JS incluyen los siguientes.
•indefinido, indefinido, cuando se declara una variable pero no se le asigna un valor o el valor de un atributo que no existe en un objeto es este.
•NaN/Infinity, estos son dos "números" obstinados (tipo de == número), que representan no números y números infinitos respectivamente. Parece inútil si la conversión a un número falla, el valor de retorno es básicamente NaN.
•nulo, utilizado como un objeto con valor cero (tipo de == objeto).
•verdadero/falso, valor booleano, representa verdadero o falso, equivalente a 1/0.
Para las cadenas, también se puede subdividir según el contenido. Según las expresiones numéricas JS, se pueden dividir en legales e ilegales. Hay varias formas diferentes de clasificar los números legales:
•Signo: signo positivo, signo negativo, sin firmar
•Base: octal, decimal, hexadecimal
•Notación científica
• Decimales, números enteros y abreviaturas de decimales
Basado en la clasificación anterior, creé una demostración para probar los resultados de diferentes métodos y conversiones numéricas. La siguiente captura de pantalla es la conversión en Chrome.
Al observar los resultados, solo los cálculos de bits pueden convertir cualquier valor en un número finito (isFinite). Los resultados de los cálculos matemáticos y la conversión forzada son los mismos.
La conversión de valores especiales está relacionada con el valor original y el método de conversión. Todas las conversiones de parseInt/parseFloat fallan y devuelven NaN.
•NaN/undefinido se convierte a NaN mediante otros métodos;
•Infinity se convierte a NaN mediante parseInt y los métodos restantes no cambian su valor;
•null/false/true no se puede convertir mediante parseInt/parseFloat y devuelve NaN.
El análisis de conversión de cadenas depende principalmente del método de conversión, pero todos los métodos no admiten números representados por octal, sino que se tratan como números decimales correspondientes.
• Los cálculos lógicos convierten expresiones legales excepto números hexadecimales negativos y descartan la parte decimal; las expresiones ilegales devuelven cero;
•El cálculo matemático/Número es similar al cálculo lógico, pero no redondea los decimales. Las expresiones ilegales que no sean cadenas vacías devuelven NaN.
•parseInt también retiene sólo la parte entera; pero para expresiones ilegales, toma la parte entera legal (decimal, hexadecimal, excluyendo notación científica) delante de la cadena y la convierte; de lo contrario, devuelve NaN.
•parseFloat es similar a parseInt, excepto que puede reconocer y retener la parte decimal y no admite números hexadecimales.