quitar number isnan error entre ejemplo diferencia como javascript undefined nan

number - nan javascript parseint



¿Por qué hay una función isNaN() en JavaScript pero no isUndefined()? (4)

¿Por qué hay una función isNaN() en JavaScript mientras que isUndefined() debe escribirse como:

typeof(...) != "undefined"

¿Hay un punto que no veo?

En mi opinión, es realmente feo escribir esto en lugar de simplemente isUndefined(testValue) .


El caso de uso var === undefined funciona en casi todas partes, excepto en los casos cubiertos por esta respuesta , donde a undefined se le asigna un valor, o var no está definido.

La razón por la cual una función de este tipo no puede existir es clara en este último caso. Si var no está definido, al llamar a la supuesta función isUndefined(var) generará un isUndefined(var) ReferenceError . Sin embargo, introducir una nueva palabra clave, por ejemplo, isundefined var podría solucionar este problema.

Pero a pesar de ser válido, los dos casos anteriores son malos usos de javascript. Esta es la razón por la que creo que tal palabra clave no existe.


Esta no es una respuesta directa a la pregunta, ya que otros ya han respondido, es más importante resaltar las bibliotecas que contienen una función isUndefined () para cualquiera que busque una solución rápida y están en condiciones de usarlas.

Tanto el guión bajo como el guión bajo contienen una función isUndefined (), esta última, porque se basa en el guión bajo.


Simplemente no hay necesidad de una función isUndefined() . La razón detrás de esto se explica en la especificación ECMAScript :

(Tenga en cuenta que el valor NaN es producido por la expresión de programa NaN). En algunas implementaciones, el código externo podría detectar una diferencia entre varios valores de No-a-Número, pero tal comportamiento depende de la implementación; Para el código ECMAScript, todos los valores de NaN son indistinguibles entre sí .

La función isNaN() actúa como una forma de detectar si algo es NaN porque los operadores de igualdad no funcionan (como es de esperar, ver más abajo) en él. Un valor de NaN no es igual a otro valor de NaN :

NaN === NaN; // false

undefined por otro lado, es diferente, y los valores undefined son distinguibles:

undefined === undefined; // true

Si tiene curiosidad por saber cómo funciona la función isNaN() , la especificación ECMAScript también lo explica para nosotros también:

  1. Deje que num sea ToNumber (número).
  2. ReturnIfAbrupt (num).
  3. Si num es NaN, devuelve verdadero.
  4. De lo contrario, devuelve falso.

Una forma confiable para que el código ECMAScript pruebe si un valor X es un NaN es una expresión de la forma X! == X. El resultado será verdadero si y solo si X es un NaN.

NaN !== NaN; // true 100 !== 100; // false var foo = NaN; foo !== foo; // true


isUndefined podría escribirse como

testValue === undefined

Como por cualquier otro valor.

Esto no funciona con NaN , sin embargo, como NaN !== NaN . Sin la capacidad de usar una comparación, se necesitaba una función isNaN para detectar valores de NaN .