quitar number isnan error entre ejemplo diferencia como javascript nan

number - nan javascript error



¿Cuál es la palabra clave reservada para NaN en javascript? (3)

si quiero probar el resultado de una expresión y la función devolvería NaN, ¿cómo verificaría eso?
ejemplos:
$(''amount'').value.toInt()!=''NaN''
^ no funciona y supongo que el valor devuelto no es una cadena,
$(''amount'').value.toInt()!=NaN
^ doesnt parece funcionar tampoco y este parece obvio

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


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

NaN === NaN; // false Number.NaN === NaN; // false isNaN(NaN); // true isNaN(Number.NaN); // true


la mejor manera de verificar el resultado de la operación numérica contra NaN es aproximarse de esta manera, por 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 está hecho.

el truco es que NaN no se puede comparar con ningún otro valor, incluso con uno mismo (NaN! = NaN siempre es cierto, así que podemos aprovechar esto y comparar el resultado contra sí mismo)

esto es JavaScript (un lenguaje bueno y extraño)


El valor de NaN se define como desigual para todo, incluido él mismo. Pruebe si un valor es NaN con la función isNaN() , de manera adecuada. (ECMAScript 6 agrega una función Number.isNan() con una semántica diferente para los argumentos que no son números, pero aún no es compatible con todos los navegadores a partir de 2015).

Hay dos propiedades incorporadas disponibles con un valor NaN: la propiedad global NaN (es decir, window.NaN en los navegadores) y Number.NaN . No es una palabra clave de idioma. En los navegadores más antiguos, la propiedad NaN podía sobrescribirse, con resultados potencialmente confusos, pero con el estándar ECMAScript 5 no se podía escribir .

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