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.