Sobes.tech
Junior

¿Cómo verificar si un número es NaN?

sobes.tech AI

Respuesta de la IA

Utilizan la función isNaN(), que verifica si el valor es "No es un número" (Not-a-Number).

// Ejemplos de uso de isNaN()
console.log(isNaN(NaN));      // true
console.log(isNaN(123));      // false
console.log(isNaN('hello'));  // true, ya que 'hello' no puede convertirse en número
console.log(isNaN('123'));    // false, ya que '123' puede convertirse en el número 123
console.log(isNaN(undefined)); // true
console.log(isNaN(null));      // false, ya que null se convierte en 0

// Verificación de conversión de tipos en isNaN()
console.log(Number('hello')); // NaN
console.log(isNaN(Number('hello'))); // true

También existe el método Number.isNaN(), que verifica de manera más estricta si el valor es exactamente NaN, sin realizar conversión previa.

// Ejemplos de uso de Number.isNaN()
console.log(Number.isNaN(NaN));      // true
console.log(Number.isNaN(123));      // false
console.log(Number.isNaN('hello'));  // false, no realiza conversión a número
console.log(Number.isNaN('123'));    // false
console.log(Number.isNaN(undefined)); // false
console.log(Number.isNaN(null));      // false

// Diferencias con isNaN() en argumentos no numéricos
console.log(isNaN('hello'));      // true
console.log(Number.isNaN('hello')); // false

Comparar NaN consigo mismo o con cualquier otro valor siempre devuelve false, excepto cuando se usa Object.is().

// Característica de comparación con NaN
console.log(NaN == NaN);  // false
console.log(NaN === NaN); // false

// Comparación usando Object.is()
console.log(Object.is(NaN, NaN)); // true

Dependiendo de la tarea, puede ser necesario usar isNaN() (si importa la conversión a número) o Number.isNaN() (para una verificación estricta de NaN). El método Number.isNaN() es preferible para verificar si un valor específico es exactamente NaN.