2011-11-04 11 views
24

C'è qualche differenza tra $.isNumeric e !isNaN()?

Non vedo dove restituiranno mai risultati diversi.

+0

Whats Your domande? non mi è chiaro. –

+4

'isNaN()' controlla in modo specifico il valore reale 'NaN', molto diverso. – Orbling

+1

@Arif - sembra abbastanza chiaro che il PO sta chiedendo quale sia la differenza tra il '$ .isNumeric' e' isNaN() '. –

risposta

26

Dal blog di jQuery:

All'interno jQuery che abbiamo trovato diverse situazioni in cui abbiamo bisogno di sapere se un argomento è numerico, o sarebbe convertito con successo ad un numero se si tratta di qualche altro tipo. Abbiamo deciso di scrivere e documentare jQuery.isNumeric() poiché è un'utilità utile. Passalo come argomento di qualsiasi tipo e restituisce true o false a seconda dei casi.


jQuery.isNaN(): Questa funzione di utilità non documentata è stato rimosso. Era fonte di confusione perché si appropriava del nome di una funzione JavaScript incorporata ma non aveva la stessa semantica. Il nuovo jQuery.isNumeric() ha uno scopo simile, ma ha il vantaggio di essere documentato e supportato. Nonostante jQuery.isNaN() non sia documentato, molti progetti su Github lo stavano usando. Li abbiamo contattati e abbiamo chiesto di usare jQuery.isNumeric() o qualche altra soluzione.

vedere anche il biglietto: http://bugs.jquery.com/ticket/10478


di jQuery isNumeric() controlla se un valore è un numero o può essere convertito in un numero.

EDIT

Per chiarire ulteriormente ciò isNan() fa (e che un valore di Nan è):

Un NaN, che significa "Not-a-Number", è classificato come un primitivo valore dallo standard ECMA-262 e indica che il valore specificato non è un numero legale. La funzione restituisce true se l'argomento non è un numero e false se l'argomento è un numero.

L'esempio classico di un NaN è zero diviso per zero, 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, ma correlato è this short talk

+2

Penso che l'OP si riferisca alla funzione JS nativa, 'isNaN()' - non alla versione jQuery. –

+0

@KirkWoll: aggiornato – PeeHaa

+0

il tuo aggiornamento contraddice il commento di Orbling sopra. E da quello che posso raccogliere, Orbling ha ragione. –

13

Come dice PeeHaa, $.isNumeric() controlli se il valore è un numero o può essere convertito in un numero, isNaN() controlla rigorosamente solo se il valore è NaN.

Ecco una tabella di confronto pratico che utilizza le jQuery documentation's esempi (confrontando $.isNumeric()-!isNaN per il confronto più facile): http://jsfiddle.net/eghE9/

+0

Grazie mille Juhana. L'ho inserito nella mia matrice di esempi ora. http://www.phillipsenn.com/Matrix/jQuery/Utilities/jQuery.isNumeric.cfm –

+0

Bello, grazie ... ho imparato qualcosa di nuovo;) –

+1

Se questa risposta inizia con "come dice PeeHaa", e contiene molto meno informazioni rispetto alla sua risposta, ed è stato pubblicato più tardi, perché è stato accettato a favore della risposta di PeeHaa? @Phillip –

Problemi correlati