Number.isNaN()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

El método Number.isNaN() determina si el valor pasado es NaN. Versión más robusta de la función global isNaN().

Sintaxis

Number.isNaN(value)

Parámetros

valor

El valor para ser evaluado por NaN.

Description

Debido a los dos operadores de igualdad, == y ===, evaluando a false cuando al comprobar si NaN is NaN, la función Number.isNaN() se ha convertido en necesaria. Esta situación es diferente a las otras comparaciones de valor en JavaScript.

En comparación a la función global isNaN(), Number.isNaN() no sufre el problema de forzar la conversión del parámetro a un número. Esto significa que ahora es seguro pasar valores que normalmente se convertirían a NaN, pero no son del mismo valor que NaN. Esto también significa que solo los valores de tipo número, que también son NaN, retornan true.

Examples

js
Number.isNaN(NaN); // true
Number.isNaN(Number.NaN); // true
Number.isNaN(0 / 0); // true

// e.g. estos hubiesen sido true con la función global isNaN()
Number.isNaN("NaN"); // false
Number.isNaN(undefined); // false
Number.isNaN({}); // false
Number.isNaN("blabla"); // false

// Todos retornan false
Number.isNaN(true);
Number.isNaN(null);
Number.isNaN(37);
Number.isNaN("37");
Number.isNaN("37.37");
Number.isNaN("");
Number.isNaN(" ");

Polyfill

js
Number.isNaN =
  Number.isNaN ||
  function (value) {
    return typeof value === "number" && isNaN(value);
  };

// O
Number.isNaN =
  Number.isNaN ||
  function (value) {
    return value !== value;
  };

Especificaciones

Specification
ECMAScript Language Specification
# sec-number.isnan

Compatibilidad con navegadores

BCD tables only load in the browser

Ver también