2012-07-11 11 views

Respuesta

6

Comprueba si v es NaN:

if(v !== v){ 
    //'v' is NaN here 
} 

De standard:

Una manera fiable para el código de ECMAScript para probar si un valor de 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.

¿Por qué no usar el built-in isNaN()?

La respuesta es simple: "isNaN() no es lo suficientemente confiable.". Éstos son los casos, cuando se isNaN() fallidos:

isNaN("NaN")   //true 
isNaN(undefined)  //true 
+0

Evidentemente, la forma de hacerlo en la ES6 es 'Object.is (obj, NaN)': http://wiki.ecmascript.org/doku.php ? id = harmony: egal –

+0

@OttoAllmendinger Muy interesante. Gracias por la información. – Engineer

1

Pone a prueba de "no es un número": NaN !== NaN es igual a true

De MDN:

El valor inicial de NaN es No-A-Number - el mismo que el valor de Número. Yaya. En los navegadores modernos, NaN es una propiedad no configurable de no modificable. Incluso cuando este no es el caso, evite anulándolo.

Es bastante raro utilizar NaN en un programa. Es el valor devuelto cuando las funciones matemáticas fallan (Math.sqrt(-1)) o cuando una función que intenta analiza un número que falla (parseInt("blabla")).