NaN (Not a Number) es un valor especial IEEE 754 que se propaga silenciosamente a través de los cálculos. Una vez que un NaN entra en un cómputo, cada resultado subsiguiente también es NaN. Se produce por operaciones numéricas inválidas como parsear cadenas no numéricas o dividir cero entre cero.
Por qué ocurre
- •Llamar a parseInt() o parseFloat() en una cadena que no comienza con un número.
- •Realizar aritmética sobre undefined (undefined + 1 === NaN).
- •Usar funciones Math con entrada no numérica (Math.sqrt(-1)).
- •Una reducción de array sin valor inicial en un array vacío.
Ejemplos
Código que causa el error
const price = parseFloat("$19.99");
const tax = price * 0.2;
console.log(tax); // NaNError en la terminal
NaN
Cómo solucionarlo
Valida la entrada numérica antes de la aritmética. Usa Number.isNaN() (no el isNaN() global) para verificar NaN ya que isNaN('') devuelve true. Siempre proporciona un valor inicial a Array.reduce(). Elimina símbolos de moneda y formato antes de parsear valores monetarios.
Código corregido
const raw = "$19.99";
const price = parseFloat(raw.replace(/[^0-9.]/g, ""));
if (isNaN(price)) throw new Error(`Cannot parse price: ${raw}`);
const tax = price * 0.2;
console.log(tax); // 3.998Errores relacionados
¿Listo para practicar tu inglés en el trabajo?
Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.
Prueba Lingua-e gratis