Una chuleta (cheatsheet) sobre NaN
(Not a Number) en JavaScript.
Propiedades y funciones
JavaScript tiene la propiedad global NaN
y dos funciones para verificar valores NaN
.
Propiedad global NaN
- Representa Not a Number (No es un Número)
- Es el resultado de expresiones que deberían producir un número pero fallaron (por ejemplo,
Math.sqrt(-1)
) - Es de tipo número:
typeof NaN === 'number'
NaN
es distinto deNaN
:NaN === NaN
esfalse
Función isNaN()
- Verifica si el valor es
NaN
después de convertirlo a un número - Devuelve
true
si el valor es NaN - Devuelve
true
si el valor no se puede convertir a un número (como"Baumann"
) - Devuelve
false
si el valor se puede convertir a un número (comostring: "36"
) - Devuelve
false
si el valor es un número válido (comonumber: 36
)
Función Number.isNaN()
- Sin convertir el valor a un número, verifica si el valor es
NaN
- Devuelve
true
si el valor esNaN
- Devuelve
false
para el resto de los valores
Generando NaN
Hay varias maneras de producir un valor NaN
.
Convertir a número
Convertir un valor a un número que no se puede convertir a un número resulta en NaN
.
Number("WTF")
parseInt("Baumann")
parseFloat("Rambito.js")
No es un número real
Hacer una operación matemática donde el resultado no es un número real resulta en NaN
.
0 / 0
Math.sqrt(-1)
Infinity - Infinity
Operación con NaN
Hacer una operación matemática con NaN
resulta en NaN
.
1 * NaN
2 + NaN
NaN / NaN
Forma indeterminada
Operaciones que están en formas indefinidas producen NaN
.
undefined * 2
undefined + undefined
Operaciones con cadena de texto
Hacer una operación con un string que no se puede convertir a un número produce NaN
, excepto las operaciones de suma, que unen los valores.
"Rambito.js" * 2 // => NaN
"Hola" + 2 // => "Hola2"
Extra 🚀
🤯 Si le preguntas a Siri "¿Cuánto es 0 dividido por 0?", te dirá esto:
Hace algunos años, Siri respondía con esta brillante respuesta:
Imaginas que tienes 0 galletas y las repartes entre 0 amigos. ¿Cuántas galletas le tocan a cada amigo? No tiene sentido, ¿lo ves?
Así que el monstruo de las galletas está triste porqué no tiene galletas y tu estás triste porque no tienes amigos.