2011-11-04 7 views
24

Czy jest jakaś różnica między $.isNumeric a !isNaN()?

Nie widzę, gdzie będą zwracać różne wyniki.

+0

Whats your zapytań? nie jest dla mnie jasne. –

+4

'isNaN()' specjalnie sprawdza rzeczywistą wartość 'NaN', bardzo różne. – Orbling

+1

@Arif - wydaje się całkiem jasne, że OP pyta, jaka jest różnica między '$ .isNumeric' i' isNaN() '. –

Odpowiedz

26

z bloga jQuery:

Wewnątrz jQuery odkryliśmy kilka sytuacji, w których musimy wiedzieć, jeśli argument jest numeryczny, albo będzie z powodzeniem konwertowane na liczby, czy jest jakiś inny typ. Postanowiliśmy napisać i udokumentować jQuery.isNumeric(), ponieważ jest to przydatne narzędzie. Przekaż go jako argument dowolnego typu i zwraca wartość true lub false, jeśli jest to właściwe.


jQuery.isNaN(): funkcja ta Nieudokumentowana narzędzie zostało usunięte. Było to mylące, ponieważ zawłaszczyło nazwę wbudowanej funkcji JavaScript, ale nie miało tej samej semantyki. Nowa funkcja jQuery.isNumeric() służy podobnemu celowi, ale ma tę zaletę, że jest udokumentowana i obsługiwana. Pomimo, że jQuery.isNaN() jest nieudokumentowane, używało go kilka projektów na Github. Skontaktowaliśmy się z nimi i poprosiliśmy o użycie jQuery.isNumeric() lub innego rozwiązania.

Zobacz także bilet: http://bugs.jquery.com/ticket/10478


jQuery za isNumeric() sprawdza czy wartość jest liczbą lub mogą być konwertowane na liczby.

EDIT

Aby dokładniej wyjaśnić co isNan() robi (i co za wartość NaN jest):

NAN, co oznacza "not-a-number", klasyfikowany jest jako prymitywny wartość przez standard ECMA-262 i wskazuje, że określona wartość nie jest liczbą prawną. Funkcja zwraca wartość true, jeśli argument nie jest liczbą i fałszem, jeśli argumentem jest liczba.

Klasycznym przykładem NaN jest zero dzieli się przez 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, ale związane jest this short talk

+2

Myślę, że OP odwołuje się do macierzystej funkcji JS, 'isNaN()' - nie wersji jQuery. –

+0

@KirkWoll: zaktualizowano – PeeHaa

+0

Twoja aktualizacja jest sprzeczna z komentarzem do powyższego komentarza. I z tego co mogę zebrać, Brygada jest prawidłowa. –

13

Jak mówi PeeHaa, $.isNumeric() kontrole czy wartość jest liczbą, czy można ją przekonwertować na liczbę, isNaN() sprawdza wyłącznie, czy wartość wynosi NaN.

Oto przydatny wykres porównanie, który wykorzystuje przykłady jQuery documentation's (porównując $.isNumeric() do !isNaN dla łatwiejszego porównania): http://jsfiddle.net/eghE9/

+0

Dziękuję bardzo Juhanie. Włączyłem go teraz do mojej matrycy przykładów. http://www.phillipsenn.com/Matrix/jQuery/Utilities/jQuery.isNumeric.cfm –

+0

Dobrze, dziękuję ... nauczyłeś się czegoś nowego;) –

+1

Jeśli ta odpowiedź zaczyna się od "jak mówi PeeHaa" i zawiera znacznie mniej informacje niż jego odpowiedź, i został opublikowany później, dlaczego został przyjęty na rzecz odpowiedzi PeeHaa? @Phillip –

Powiązane problemy