2011-11-04 27 views
24

Có sự khác biệt nào giữa $.isNumeric!isNaN() không?

Tôi không biết họ sẽ bao giờ quay trở lại các kết quả khác nhau ở đâu.

+0

whats bạn thắc mắc? không rõ ràng với tôi. –

+4

'isNaN()' đặc biệt kiểm tra giá trị 'NaN' thực tế, rất khác nhau. – Orbling

+1

@Arif - có vẻ như khá rõ ràng rằng OP hỏi câu khác nhau giữa '$ .isNumeric' và' isNaN() '. –

Trả lời

26

Từ blog jQuery:

Bên trong jQuery chúng tôi đã tìm thấy một số tình huống mà chúng ta cần phải biết nếu một cuộc tranh cãi là số, hoặc sẽ được chuyển đổi thành công cho một số nếu nó là một số loại khác. Chúng tôi quyết định viết và viết tài liệu jQuery.isNumeric() vì đây là một tiện ích hữu ích. Vượt qua nó một đối số của bất kỳ loại nào và nó trả về true hoặc false khi thích hợp.


jQuery.isNaN(): hàm thỏa dụng không có giấy tờ này đã bị xóa. Nó đã gây nhầm lẫn vì nó chiếm đoạt tên của một hàm JavaScript tích hợp nhưng không có cùng ngữ nghĩa. JQuery.isNumeric() mới phục vụ một mục đích tương tự, nhưng có lợi ích của việc được tài liệu và hỗ trợ. Mặc dù jQuery.isNaN() không có giấy tờ, một số dự án trên Github đã sử dụng nó. Chúng tôi đã liên lạc với họ và yêu cầu họ sử dụng jQuery.isNumeric() hoặc một số giải pháp khác.

Xem thêm vé: http://bugs.jquery.com/ticket/10478


jQuery isNumeric() kiểm tra xem một giá trị là một số OR có thể được chuyển đổi sang một số.

EDIT

Để làm rõ hơn nữa những gì isNan() không (và những gì một giá trị NaN là):

Một NaN, có nghĩa là "Không-một-số", được phân loại là một nguyên thủy giá trị theo tiêu chuẩn ECMA-262 và chỉ ra rằng giá trị được chỉ định không phải là số hợp pháp. Hàm trả về true nếu đối số không phải là số và sai nếu đối số là một số.

Các ví dụ điển hình của một NaN là zero chia cho 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, nhưng có liên quan là this short talk

+2

Tôi nghĩ rằng OP đang đề cập đến hàm JS gốc, 'isNaN()' - không phải là phiên bản jQuery. –

+0

@KirkWoll: cập nhật – PeeHaa

+0

cập nhật mâu thuẫn với nhận xét của Orbling ở trên. Và từ những gì tôi có thể thu thập, Orbling là chính xác. –

13

Như PeeHaa nói, $.isNumeric() kiểm tra cho dù giá trị có phải là một số hay có thể được chuyển đổi thành một số hay không, thì chỉ cần kiểm tra xem số tiền là NaN có đúng không.

Dưới đây là một biểu đồ so sánh tiện dụng mà sử dụng jQuery documentation's ví dụ (so sánh $.isNumeric()-!isNaN để so sánh dễ dàng hơn): http://jsfiddle.net/eghE9/

+0

Cảm ơn bạn rất nhiều Juhana. Tôi đã cắm nó vào ma trận của tôi về các ví dụ bây giờ. http://www.phillipsenn.com/Matrix/jQuery/Utilities/jQuery.isNumeric.cfm –

+0

Rất tốt, cảm ơn bạn ... đã học được điều gì đó mới mẻ;) –

+1

Nếu câu trả lời này bắt đầu bằng 'như PeeHaa nói' và chứa ít hơn nhiều thông tin hơn câu trả lời của anh ta, và được đăng sau, tại sao nó được chấp nhận có lợi cho câu trả lời của PeeHaa? @Phillip –

Các vấn đề liên quan