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' NaNes distinto deNaN:NaN === NaNesfalse
Función isNaN()
- Verifica si el valor es
NaNdespués de convertirlo a un número - Devuelve
truesi el valor es NaN - Devuelve
truesi el valor no se puede convertir a un número (como"Baumann") - Devuelve
falsesi el valor se puede convertir a un número (comostring: "36") - Devuelve
falsesi 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
truesi el valor esNaN - Devuelve
falsepara 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.