Actualizado el

NaN en JavaScript: guía rápida para desarrolladores

NaN (Not a Number) es el valor que JavaScript devuelve cuando una operación numérica no puede producir un número válido, como 0 / 0 o Number("WTF"). Es de tipo number y es el único valor que no es igual a sí mismo, así que para detectarlo se usa Number.isNaN() y no ===.

Esta es una chuleta (cheatsheet) con todo lo que hay que saber sobre NaN en JavaScript.

Propiedades y funciones

JavaScript tiene la propiedad global NaN y dos funciones para verificar valores NaN.

Propiedad global NaN

Función isNaN()

Función Number.isNaN()

isNaN() frente a Number.isNaN()

La diferencia está en la conversión previa: isNaN() convierte el valor a número antes de comprobarlo y Number.isNaN() no.

Valor isNaN() Number.isNaN()
NaN true true
"Baumann" true false
undefined true false
{} true false
"36" false false
36 false false
"" false false
null false false

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.

Fuentes


Comparte


Jorge Baumann aka Baumannzone
Escrito por Jorge Baumann

Jorge Baumann es Senior Software Engineer, especializado en JavaScript. También es creador de contenido y speaker. Vive en Madrid, le encanta el testing, dibujar con CSS y tiene un perro que se llama Rambo.

Conoce más sobre Baumann →