2011-11-04 46 views
24

$.isNumeric!isNaN()之間是否有區別?

我不明白他們會在哪裏返回不同的結果。

+0

什麼是您的疑問?對我不清楚。 –

+4

'isNaN()'專門檢查實際的'NaN'值,非常不同。 – Orbling

+1

@Arif - 似乎很清楚OP在詢問'$ .isNumeric'和'isNaN()'之間的區別。 –

回答

26

從jQuery博客:

裏面的jQuery我們發現,我們需要知道,如果一個參數是數字,或將成功地轉換爲數字,如果是一些其他類型的幾種情況。我們決定編寫並記錄jQuery.isNumeric(),因爲它是一個有用的實用程序。將它傳遞給任何類型的參數,並根據需要返回true或false。


jQuery.isNaN():這一無證效用函數已被移除。這很令人困惑,因爲它佔用了內建JavaScript函數的名稱,但沒有相同的語義。新的jQuery.isNumeric()服務於類似的目的,但有記錄和支持的好處。儘管jQuery.isNaN()沒有記錄,但Github上的幾個項目正在使用它。我們已經與他們聯繫並要求他們使用jQuery.isNumeric()或其他解決方案。

還請參閱票:http://bugs.jquery.com/ticket/10478


jQuery的isNumeric()檢查是否一個值是一個數,或者可以轉換爲數字。

EDIT

爲了進一步闡明isNan()做什麼(和NaN值是什麼):

甲NaN時,這意味着 「不是一個號碼」,被歸類爲一個原始的值的ECMA-262標準,並指出該指定的值不是一個合法的數字。如果參數不是數字,則函數返回true,如果參數是數字,則返回false。

爲NaN的典型的例子是零除以零,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

半offtopic,但相關的是this short talk

+2

我認爲OP是指原生JS函數'isNaN()' - 而不是jQuery版本。 –

+0

@KirkWoll:已更新 – PeeHaa

+0

您的更新與上述Orbling的評論相矛盾。從我所能得到的來看,Orbling是正確的。 –

13

作爲PeeHaa說,$.isNumeric()檢查無論該值是一個數字還是可以轉換爲數字,isNaN()只會嚴格檢查值是否爲NaN

下面是一個使用了jQuery documentation's例子一個方便的對比圖(比較$.isNumeric()!isNaN爲便於比較):http://jsfiddle.net/eghE9/

+0

非常感謝Juhana。我現在將它插入到我的矩陣示例中。 http://www.phillipsenn.com/Matrix/jQuery/Utilities/jQuery.isNumeric.cfm –

+0

尼斯,謝謝你...學到了新的東西;) –

+1

如果這個答案以'PeeHaa說'開頭,並且包含更少信息比他的答案要多,後來又發佈了,爲什麼接受PeeHaa的回答呢? @Phillip –