Desmitificando NaN en JavaScript: manejar valores no numéricos de manera efectiva

| Última modificación: 7 de junio de 2024 | Tiempo de Lectura: 4 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

En el mundo de la programación con JavaScript, tarde o temprano te encontrarás con NaN (Not-A-Number). Este valor puede ser confuso y frustrante si no sabes cómo manejarlo adecuadamente. En esta guía, desmitificaremos NaN en JavaScript y te enseñaremos a manejar estos valores no numéricos de manera efectiva. ¡Vamos allá!

NaN en JavaScript

¿Qué es NaN en JavaScript?

NaN en Javascript (Not-A-Number) es un valor especial que indica que una operación aritmética ha fallado o que el resultado no es un número válido. Es una propiedad del objeto global, lo que significa que puedes acceder a ella directamente desde cualquier parte de tu código sin necesidad de importar o definir nada adicional.

Características de NaN en Javascript

  • Inmutable: No puedes sobrescribir el valor de NaN. Es una constante que siempre representa el concepto de “no es un número”.
  • No numerable: NaN no aparecerá en bucles que enumeren las propiedades del objeto.
  • No configurable: No puedes cambiar sus atributos ni redefinirlo.

El valor de NaN es utilizado por varias funciones y métodos de JavaScript para indicar que una operación ha fallado. Por ejemplo, si intentas convertir una cadena de texto que no representa un número en un número, el resultado será NaN.

Comparación y comportamiento único

Una característica única de NaN es que no es igual a ningún otro valor, incluido sí mismo. Esto significa que la comparación de NaN con cualquier valor, incluso otro NaN, siempre devolverá false.

console.log(NaN === NaN); // false

Para comprobar si un valor es NaN, debes usar la función isNaN():

let valor = NaN;
console.log(isNaN(valor)); // true

Cómo se genera NaN en JavaScript

Existen múltiples formas en las que puedes obtener NaN en JavaScript. Aquí te dejamos algunos ejemplos comunes:

  • Operaciones matemáticas inválidas: Cuando realizas una operación aritmética que no tiene sentido matemático, como dividir cero entre cero, el resultado es NaN.
let resultado = 0 / 0; // NaN
  • Parseo fallido de cadenas: Intentar convertir una cadena que no contiene un número en un número resulta en NaN.
let numero = parseInt('texto'); // NaN
  • Operaciones con NaN: Cualquier operación aritmética que involucre NaN también resultará en NaN, ya que el resultado no puede ser un número válido.
let suma = NaN + 5; // NaN

En la práctica, NaN se utiliza principalmente para indicar que una operación aritmética no ha podido devolver un número válido. Esto puede ocurrir en diversas situaciones, como al trabajar con datos de usuario o al procesar resultados de cálculos complejos.

Number.isNaN() vs isNaN()

JavaScript proporciona dos funciones para comprobar si un valor es NaN: isNaN() y Number.isNaN(). Aunque parecen similares, hay diferencias importantes entre ellas.

  • isNaN(): Esta función intenta convertir el valor a un número antes de comprobar si es NaN, lo que puede llevar a resultados inesperados. Por ejemplo, isNaN('texto') devuelve true porque ‘texto’ no se puede convertir en un número.
  • Number.isNaN(): Esta función es más estricta y solo devuelve true si el valor es exactamente NaN.
console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN('texto')); // false
console.log(isNaN('texto')); // true

Evitando NaN en JavaScript

Para evitar problemas con NaN en JavaScript, sigue estas buenas prácticas:

Validar entradas de usuario

Antes de realizar operaciones matemáticas, asegúrate de que las entradas del usuario sean números válidos.

function sumar(a, b) {
  if (isNaN(a) || isNaN(b)) {
    return NaN;
  }
  return a + b;
}

Usar valores por defecto

Cuando trabajes con valores que puedan ser NaN, considera usar valores por defecto.

let numero = parseInt('texto') || 0; // 0

Comprobar tipos de datos

Verifica los tipos de datos antes de realizar operaciones.

function multiplicar(a, b) {
  if (typeof a !== 'number' || typeof b !== 'number') {
    return NaN;
  }
  return a * b;
}

Ejemplos prácticos de manejo de NaN

Validación de datos de formularios

Supongamos que tienes un formulario donde el usuario ingresa dos números para sumar. Puedes usar isNaN() para validar las entradas.

function procesarFormulario() {
  let num1 = parseFloat(document.getElementById('num1').value);
  let num2 = parseFloat(document.getElementById('num2').value);

  if (isNaN(num1) || isNaN(num2)) {
    alert('Por favor, ingresa números válidos.');
  } else {
    alert('La suma es: ' + (num1 + num2));
  }
}

Manejo de errores en funciones

Si tienes una función que realiza cálculos, puedes devolver NaN para indicar un error y manejarlo adecuadamente.

function dividir(a, b) {
  if (b === 0) {
    return NaN;
  }
  return a / b;
}

let resultado = dividir(10, 0);
if (isNaN(resultado)) {
  console.log('Error: división por cero.');
} else {
  console.log('Resultado: ' + resultado);
}

NaN en JavaScript puede ser una fuente de confusión si no sabes cómo manejarlo correctamente. Sin embargo, con un poco de conocimiento y las prácticas adecuadas, puedes evitar problemas y asegurarte de que tu código funcione de manera eficiente. Recuerda validar las entradas, usar valores por defecto y comprobar los tipos de datos para evitar la propagación de NaN en tu código.

Si deseas dominar el manejo de NaN y otras características avanzadas de JavaScript, únete a nuestro bootcamp en desarrollo web de KeepCoding. Aprenderás de expertos en el campo, adquirirás habilidades altamente demandadas y podrás transformar tu carrera en la industria tecnológica. ¡Inscríbete hoy en KeepCoding y da el primer paso hacia un futuro profesional prometedor con altos salarios y estabilidad laboral!

Alberto Casero

Alberto Casero es CTO en Watium, Fundador de Kas Factory & Coordinador del Bootcamp en Desarrollo Web.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Desarrollo Web

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado