Pregunta

si quiero probar el resultado de una expresión y la función volvería NaN ¿Cómo puedo comprobar que
ejemplos:
$('amount').value.toInt()!='NaN'
^ no funciona y supongo que el valor devuelto no es una cadena,
$('amount').value.toInt()!=NaN
^ tampoco parece funcionar bien y éste parece obvio

Entonces, ¿cómo comprobado si el valor devuelto no es un número?

¿Fue útil?

Solución

El valor NaN se define para ser desigual a todo, incluyendo en sí. Comprueba si un valor es NaN con el isNaN() función, muy apropiadamente. (ECMAScript 6 añade una Number.isNan() función con diferentes semántica para argumentos que no sean números, pero no es compatible con todos los navegadores sin embargo, a partir de 2015).

Hay dos propiedades integradas disponibles con un valor NaN: lo global propiedad NaN (es decir window.NaN en los navegadores), y Number.NaN . Es no una palabra clave del lenguaje. En los navegadores más antiguos, la propiedad NaN podría ser sobrescrito, con resultados potencialmente confusas, pero con la ECMAScript 5 estándar que se hizo no escribible .

  • Como @some señaló en los comentarios, también existe la función global isFinite () que puede ser útil.

Otros consejos

la mejor manera de comprobar el resultado de la operación numérica contra NaN es aproach esta manera, ejemplo:

var x  = 0;
var y  = 0;
var result = x/y;  // we know that result will be NaN value
// to test if result holds a NaN value we should use the following code :

if(result !=result){
console.log('this is an NaN value');
} 

y se hace.

el truco es que NaN no se puede comparar con cualquier otro valor, incluso con él mismo (NaN! = NaN es siempre verdad para que podamos tomar ventaja de esto y comparar resultar contra sí mismo)

esto es JavaScript (una lengua buena y extraño)

operador de igualdad (== y ===) no se puede utilizar para probar un valor contra NaN. Utilice Number.isNaN () o isNaN () en su lugar.

NaN === NaN;        // false
Number.NaN === NaN; // false
isNaN(NaN);         // true
isNaN(Number.NaN);  // true
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top