欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于jQuery $.isNumeric vs. $.isNaN vs. isNaN

 更新時(shí)間:2013年04月15日 08:54:37   作者:  
本篇文章,小編將為大家介紹jQuery $.isNumeric vs. $.isNaN vs. isNaN,有需要的朋友可以參考一下

在jQuery中,有幾種方式可以判斷一個(gè)對(duì)象是否是數(shù)字,或者可否轉(zhuǎn)換為數(shù)字。
首先,jQuery.isNaN()在最新版本中已經(jīng)被移除了(1.7之后),取而代之的是  jQuery.isNumeric ()。這并不奇怪,因?yàn)閖Query.isNaN() 同Javascript內(nèi)置的isNaN()名字相同,但是語(yǔ)義卻不完全相同,在一定意義上會(huì)造成歧義。 jQuery.isNumeric ()有著與其相似的功能,同時(shí)也解決了歧義問題。

jQuery.isNumeric ()檢查傳進(jìn)的參數(shù)是否是數(shù)字或者可否轉(zhuǎn)換為數(shù)字;Javascript 內(nèi)置的isNaN() 檢查傳進(jìn)的參數(shù)是否是一個(gè)合法的數(shù)字,典型的例子是0/0。

具體區(qū)別可以看測(cè)試:

測(cè)試數(shù)據(jù):

復(fù)制代碼 代碼如下:

var values = [

"-10",
,
xFF,

"0xFF",

"8e5",
.1415,

+10,
,

"",

{},

NaN,

null,

true,

Infinity,

undefined,

false

];

使用jQuery verision1.6:

復(fù)制代碼 代碼如下:

for( var index in values ) {

    var v = values[ index ];

    $( 'table' ).append( '<tr><td>'+v+'</td><td>'

                         +(!isNaN( v )?"true":"false")

                         +'</td><td>'

                         +(!$.isNaN( v )?"true":"false")

                         +'</td></tr>' );

}

輸出:

 

!isNaN()

!$.isNaN()

-10

true

true

16

true

true

255

true

true

0xFF

true

true

8e5

true

true

3.1415

true

true

10

true

true

100

true

true

 

true

false

[object Object]

false

false

NaN

false

false

null

true

false

true

true

false

Infinity

true

false

undefined

false

false

使用 jQuery version1.7

復(fù)制代碼 代碼如下:

for( var index in values ) {

    var v = values[ index ];

    $( 'table' ).append( '<tr><td>'+v+'</td><td>'

                         +(!isNaN( v )?"true":"false")

                         +'</td><td>'

                         +($.isNumeric( v )?"true":"false")

                         +'</td></tr>' );

}

輸出:

!isNaN()

$.isNumeric()

-10

true

true

16

true

true

255

true

true

0xFF

true

true

8e5

true

true

3.1415

true

true

10

true

true

100

true

true

 

true

false

[object Object]

false

false

NaN

false

false

null

true

false

true

true

false

Infinity

true

false

undefined

false

false

可以看出,$.isNumeric() 跟 !$.isNaN() 結(jié)果是一樣的, 而 jQuery $.isNumeric() 同Javascript 自帶的!isNaN()在對(duì)空字符串、null、true/false、Infinity的處理是不同的。因?yàn)閕sNaN()只是檢查傳入的值是否是NaN類型。

NaN (Not a Number)是一個(gè)數(shù)字?jǐn)?shù)據(jù)類型,表明未定義(undefined )或無(wú)法表示(unrepresentable )的值,尤其是浮點(diǎn)數(shù)計(jì)算值。

因此,isNaN(null) == false 在語(yǔ)義上是正確的,因?yàn)閚ull不是NaN(事實(shí)上null、ture/false等等會(huì)先轉(zhuǎn)為數(shù)字0)。但是如果用!isNaN()來(lái)判斷傳入的值可否轉(zhuǎn)換為數(shù)字,又不大恰當(dāng)。而Javascript另一種方式 typeof num == 'number' 則無(wú)法檢測(cè)字符串情況。因此如果不使用 jQuery $.isNumeric(),則最好還是重寫一個(gè)方法判斷,比如用正則來(lái)判斷或者:

復(fù)制代碼 代碼如下:

function isNumeric(obj) {
    return !isNaN(parseFloat(obj)) && isFinite(obj);
}

相關(guān)文章

最新評(píng)論