2011-11-04 7 views
24

¿Hay alguna diferencia entre $.isNumeric y !isNaN()?

no veo donde alguna vez volverán diferentes resultados.

+0

cuál es su consulta? no está claro para mí –

+4

'isNaN()' comprueba específicamente el valor real de 'NaN', muy diferente. – Orbling

+1

@Arif - parece bastante claro que el OP pregunta cuál es la diferencia entre '$ .isNumeric' y' isNaN() '. –

Respuesta

26

Desde el blog de jQuery:

Dentro de jQuery que hemos encontrado varias situaciones en las que necesitamos saber si un argumento es numérico, o se convirtió con éxito a un número si se trata de algún otro tipo. Decidimos escribir y documentar jQuery.isNumeric() ya que es una utilidad útil. Pase un argumento de cualquier tipo y devuelve verdadero o falso según corresponda.


jQuery.isNaN(): Esta función de utilidad indocumentado se ha eliminado. Era confuso porque se apropiaba del nombre de una función incorporada de JavaScript pero no tenía la misma semántica. El nuevo jQuery.isNumeric() tiene un propósito similar, pero tiene el beneficio de ser documentado y respaldado. A pesar de que jQuery.isNaN() no está documentado, varios proyectos en Github lo estaban usando. Los contactamos y les pedimos que utilicen jQuery.isNumeric() o alguna otra solución.

Véase también el billete: http://bugs.jquery.com/ticket/10478


de jQuery isNumeric() comprueba si un valor es un número o se puede convertir en un número.

EDITAR

Para aclarar aún más lo isNan() hace (y lo que un valor NaN es):

A NaN, que significa "No-a-Number", se clasifica como una primitiva valor por el estándar ECMA-262 e indica que el valor especificado no es un número legal. La función devuelve verdadero si el argumento no es un número y falso si el argumento es un número.

El ejemplo clásico de un NaN es cero dividido por cero, 0/0

Code: 
document.write(isNaN("Ima String")) 
document.write(isNaN(0/0)) 
document.write(isNaN("348")) 
document.write(isNaN(348)) 

Output: 
true 
true 
false 
false 

http://www.devguru.com/technologies/ecmascript/quickref/isnan.html

Semi offtopic, pero relacionado es this short talk

+2

Creo que OP está refiriendo la función JS nativa, 'isNaN()' - no la versión jQuery. –

+0

@KirkWoll: actualizado – PeeHaa

+0

su actualización contradice el comentario anterior de Orbling. Y por lo que puedo deducir, Orbling es correcto. –

13

Como dice PeeHaa, $.isNumeric() cheques si el valor es un número o se puede convertir a un número, isNaN() verifica estrictamente solo si el valor es NaN.

Aquí hay una tabla de comparación práctica que utiliza los ejemplos jQuery documentation's (comparando $.isNumeric()-!isNaN para la comparación más fácil): http://jsfiddle.net/eghE9/

+0

Muchas gracias Juhana. Lo he conectado a mi matriz de ejemplos ahora. http://www.phillipsenn.com/Matrix/jQuery/Utilities/jQuery.isNumeric.cfm –

+0

Bien, gracias ... aprendí algo nuevo;) –

+1

Si esta respuesta comienza con 'como dice PeeHaa', y contiene mucho menos información que su respuesta, y fue publicada más tarde, ¿por qué fue aceptada a favor de la respuesta de PeeHaa? @Phillip –

Cuestiones relacionadas