Solo lo he estado probando en la consola JavaScript de Firefox, pero ninguna de las siguientes afirmaciones es verdadera:
parseFloat('geoff') == NaN;
parseFloat('geoff') == Number.NaN;
javascript
nan
Paul D. Waite
fuente
fuente
Respuestas:
Prueba este código:
Para verificar si algún valor es NaN, en lugar de solo números, consulte aquí: ¿Cómo se prueba para NaN en Javascript?
fuente
NaN
, entonces sí. (No digo que siempre lo harías)isNaN(parseFloat("geoff")) // true
isNaN(parseFloat("10geo")) // false
¿Cómo es esto útil?Acabo de encontrar esta técnica en el libro JavaScript eficaz que es bastante simple:
Dado que NaN es el único valor de JavaScript que se trata como desigual a sí mismo, siempre puede probar si un valor es NaN verificándolo para que sea igual a sí mismo:
No me di cuenta de esto hasta que @allsyed comentó, pero esto está en la especificación de ECMA: https://tc39.github.io/ecma262/#sec-isnan-number
fuente
Usa este código:
Ver
isNaN()
documentos en MDN .fuente
var value = 0/0;
yvar value2= String("123 131");
crea valores de NaN y algo como estovar value3 = "abcd";
también es un valor de NaN.Siempre que se pruebe un valor de tipo Número , sea
NaN
o no, la función globalisNaN
hará el trabajoPara un enfoque genérico que funcione para todos los tipos en JS, podemos usar cualquiera de los siguientes:
Para usuarios de ECMAScript-5:
Para personas que usan ECMAScript-6:
Y para propósitos de consistencia en ECMAScript 5 y 6, también podemos usar este polyfill para Number.isNan
por favor revise esta respuesta para más detalles.
fuente
isNaN
convierte primero el argumento a un valor numérico.NaN es un valor especial que no se puede probar así. Una cosa interesante que solo quería compartir es esto
Esto devuelve verdadero solo para los valores de NaN y es una forma segura de prueba. Definitivamente debería estar envuelto en una función o al menos comentado, porque obviamente no tiene mucho sentido probar si la misma variable no es igual entre sí, jeje.
fuente
Debe usar la
isNaN(value)
llamada a la función global , porque:Ejemplos:
Espero que esto ayude.
fuente
isNaN('') //false
peroparseInt('') //NaN
. Lo mismo puede decirse denull
.A partir de ES6 ,
Object.is(..)
es una nueva utilidad que se puede utilizar para probar dos valores de igualdad absoluta:fuente
Para solucionar el problema donde
'1.2geoff'
se analiza, solo usa elNumber()
analizador.Entonces, en lugar de esto:
Hacer esto:
EDITAR: acabo de notar otro problema de esto ... los valores falsos (y verdadero como un booleano real) se
Number()
devolvieron como0
! En cuyo caso ... parseFloat funciona siempre en su lugar. Entonces volvamos a eso:Y eso cubre aparentemente todo. Lo comparé en un 90% más lento que el de Lodash,
_.isNaN
pero ese no cubre todos los NaN:http://jsperf.com/own-isnan-vs-underscore-lodash-isnan
Para ser claros, el mío se encarga de la interpretación literal humana de algo que no es "un número" y lodash se encarga de la interpretación literal de la computadora para verificar si algo es "NaN".
fuente
Si bien la respuesta de @chiborg ES correcta, hay más que debe tenerse en cuenta:
El punto es, si está utilizando este método para la validación de la entrada, el resultado será bastante liberal.
Entonces, sí, puede usar
parseFloat(string)
(o en el caso de números completosparseInt(string, radix)
'y luego envolverlo con esoisNaN()
, pero tenga en cuenta el gotcha con números entrelazados con caracteres no numéricos adicionales.fuente
parseFloat('test1.2')
devolveráNaN
.¡Solución simple!
REALMENTE super simple! ¡Aquí! ¡Ten este método!
Use tan simple como:
Ejemplo:
Hay un par de caminos alternativos que debe seguir para la implementación, si no desea utilizar un método con un nombre alternativo y desea asegurarse de que esté más disponible a nivel mundial. Advertencia Estas soluciones implican la alteración de objetos nativos y pueden no ser su mejor solución. Siempre tenga cuidado y tenga en cuenta que otras bibliotecas que pueda utilizar pueden depender de código nativo o alteraciones similares.
Implementación alternativa 1: Reemplazar
isNaN
método nativo .Implementación alternativa 2: anexar al objeto de número
* Sugerido, ya que también es un relleno de polietileno para ECMA 5 a 6
Prueba de solución alternativa si está vacía
Un método de ventana simple escribí esa prueba si el objeto está vacío . Es un poco diferente en el sentido de que no da si el artículo es "exactamente" NaN , pero pensé que arrojaría esto, ya que también puede ser útil al buscar artículos vacíos.
Ejemplo:
Mostrar fragmento de código
Verificación extremadamente profunda si está vacío
Este último va un poco profundo, incluso comprobando si un Objeto está lleno de Objetos en blanco. Estoy seguro de que tiene margen de mejora y posibles pozos, pero hasta ahora, parece capturar casi todo.
Mostrar fragmento de código
fuente
isNaN
que NO es confiable. Me comentaron allí y me dijeron que esta pregunta se adaptaría mejor a mi respuesta, moviéndola aquí. Simplemente poner algo útil / útil por ahí en relación con este tema que aparecerá en una búsqueda en Google del tema en cuestión,is it NaN?
. Como nota al margen, mi respuesta sería más precisa con más frecuencia que la respuesta seleccionada.Solo quiero compartir otra alternativa, no es necesariamente mejor que otras aquí, pero creo que vale la pena mirar:
La lógica detrás de esto es que todos los números excepto
0
yNaN
son emitidos atrue
.He hecho una prueba rápida y funciona tan bien como
Number.isNaN
para comprobar si es falso. Los tres funcionan mejor queisNan
Los resultados
Puede ser útil si desea evitar la
isNaN
función rota .fuente
Si su entorno es compatible con ECMAScript 2015 , puede utilizarlo
Number.isNaN
para asegurarse de que el valor sea realmenteNaN
.El problema
isNaN
es que si usa eso con datos no numéricos hay pocas reglas confusas (según MDN). Por ejemplo,Por lo tanto, en los entornos compatibles con ECMA Script 2015, es posible que desee utilizar
fuente
isNaN
podría meterlo en problemas y recuerde usarloNumber.isNaN
en entornos ECMAScript 2015 :-)NaN en JavaScript significa "No es un número", aunque su tipo es en realidad número.
Para verificar si una variable es de valor NaN, no podemos simplemente usar la función isNaN (), porque isNaN () tiene el siguiente problema, ver a continuación:
Lo que realmente sucede aquí es que myVar se coacciona implícitamente a un número:
En realidad tiene sentido, porque "A" en realidad no es un número. Pero lo que realmente queremos comprobar es si myVar es exactamente de valor NaN.
Entonces isNaN () no puede ayudar. Entonces, ¿qué debemos hacer en su lugar?
A la luz de que NaN es el único valor de JavaScript que se trata de manera desigual, por lo que podemos verificar su igualdad usando! ==
Para concluir , si es cierto que una variable! == en sí misma, entonces esta variable es exactamente de valor NaN:
fuente
Uso la
isNaN
función de subrayado porque en JavaScript:Por lo menos, ten en cuenta ese problema.
fuente
undefined
sería un comportamiento incorrecto? Es cierto queundefined
no es un número, ¿no es así?undefined
puede ser algo diferente deNaN
, sin embargo, todavía no es un número, por lo queisNaN(undefined)
debería ser (y lo es)true
Quizás también esto:
fuente
Parece que isNaN () no es compatible con Node.js fuera de la caja.
Trabajé con
fuente
fuente
Mire la documentación de Mozilla La propiedad global NaN es un valor que representa Not-A-Numbe
La mejor manera es usar 'isNaN ()', que es una función incorporada para verificar NaN. Todos los navegadores admiten el camino ...
fuente
La regla es:
El problema de la función isNaN () es que puede devolver resultados inesperados en algunos casos:
Una mejor manera de verificar si el valor es realmente NaN es:
fuente
De acuerdo con IEEE 754, todas las relaciones que involucran NaN se evalúan como falsas, excepto! =. Así, por ejemplo, (A> = B) = falso y (A <= B) = falso si A o B o ambos son / son NaN.
fuente
Escribí esta respuesta a otra pregunta en StackOverflow donde otro comprueba cuándo,
NaN == null
pero luego se marcó como duplicado, por lo que no quiero desperdiciar mi trabajo.Mire acerca de la red de desarrolladores de Mozilla
NaN
.Respuesta corta
Solo úselo
distance || 0
cuando quiera asegurarse de que el valor sea un número apropiado oisNaN()
para verificarlo.Respuesta larga
El NaN (Not-a-Number) es un Objeto global extraño en JavaScript que se devuelve con frecuencia cuando falla alguna operación matemática.
Querías comprobar si
NaN == null
resultafalse
. Hovewer inclusoNaN == NaN
resulta confalse
.Una manera simple de averiguar si la variable
NaN
es una función globalisNaN()
.Otro es
x !== x
que solo es cierto cuando x es NaN. (gracias por recordar a @ raphael-schweikert)Pero, ¿por qué funcionó la respuesta corta?
Vamos a averiguar.
Cuando llamas
NaN == false
al resultado esfalse
, lo mismo conNaN == true
.En algún lugar de las especificaciones, JavaScript tiene un registro con valores siempre falsos, que incluye:
NaN
- No un número""
- cuerda vacíafalse
- un falso booleanonull
- objeto nuloundefined
- variables indefinidas0
- 0 numérico, que incluye +0 y -0fuente
var xIsNaN = x !== x;
esto es cierto solo si x esNaN
.Se menciona otra solución en la página parseFloat de MDN
Proporciona una función de filtro para realizar un análisis estricto.
Y luego puedes usar
isNaN
para verificar si esNaN
fuente
La forma exacta de verificar es:
fuente
He creado esta pequeña función que funciona a las mil maravillas. En lugar de buscar NaN, que parece ser contrario a la intuición, verifica un número. Estoy bastante seguro de que no soy el primero en hacerlo de esta manera, pero pensé en compartirlo.
fuente
Encontré otra forma, solo por diversión.
fuente
La respuesta de marksyzm funciona bien, pero no devuelve falso
Infinity
ya que Infinity técnicamente no es un número.Se me ocurrió una
isNumber
función que verificará si es un número.ACTUALIZACIÓN: noté que este código falla para algunos parámetros, así que lo mejoré.
fuente
Esto no es elegante. pero después de probar isNAN () llegué a esta solución, que es otra alternativa. En este ejemplo también permití '.' porque estoy enmascarando para flotar. También puede revertir esto para asegurarse de que no se usen números.
Esta es una evaluación de un solo carácter, pero también puede recorrer una cadena para verificar cualquier número.
fuente
Puede verificar NaN usando la función isNaN javascript. Simplemente pasando el número o valor a la función isNaN
fuente
Simplemente convierta el resultado a String y compárelo con 'NaN'.
fuente
¿Es (NaN> = 0) ? ...... " No sé ".
Las condiciones solo se ejecutan si es VERDADERO .
No en FALSO .
No en " No lo sé ".
fuente