首頁  >  文章  >  web前端  >  關於jQuery $.isNumeric vs. $.isNaN vs. isNaN_基礎知識

關於jQuery $.isNumeric vs. $.isNaN vs. isNaN_基礎知識

WBOY
WBOY原創
2016-05-16 17:37:061265瀏覽

在jQuery中,有几种方式可以判断一个对象是否是数字,或者可否转换为数字。
首先,jQuery.isNaN()在最新版本中已经被移除了(1.7之后),取而代之的是  jQuery.isNumeric ()。这并不奇怪,因为jQuery.isNaN() 同Javascript内置的isNaN()名字相同,但是语义却不完全相同,在一定意义上会造成歧义。 jQuery.isNumeric ()有着与其相似的功能,同时也解决了歧义问题。

jQuery.isNumeric ()检查传进的参数是否是数字或者可否转换为数字;Javascript 内置的isNaN() 检查传进的参数是否是一个合法的数字,典型的例子是0/0。

具体区别可以看测试:

测试数据:

复制代码 代码如下:

var values = [

"-10",
,
xFF,

"0xFF",

"8e5",
.1415,

+10,
,

"",

{},

NaN,

null,

true,

Infinity,

undefined,

false

];

使用jQuery verision1.6:

复制代码 代码如下:

for( var index in values ) {

    var v = values[ index ];

    $( 'table' ).append( ''+v+''

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

                         +''

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

                         +'' );

}

输出:

 

!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

複製代碼代碼如下:

for( var index in values ) {

    var v = 值[索引];

    $( 'table' ).append( '

' v ' '

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

                         '

'

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

                         '

' );

}

輸出:

!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

!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 [物件物件] NaN true true true 無限 true 未定義 可以看出,$.isNumeric() 跟 !$.isNaN() 結果是一樣的,而 jQuery $.isNumeric() 同Javascript自帶的!isNaN()在對空字串、null、true/ false、Infinity的處理是不同的。 NaN (Not a Number) 是一個數字資料類型,表示未定義(undefined )或無法表示(unrepresentable )的值,尤其是浮點數計算值。 因此,isNaN(null) == false 在語意上是正確的,因為null不是NaN(事實上null、ture/false等等會先轉為數字0)。確定的值可否轉換為數字,又不太大。寫一個方法判斷,例如用正規來判斷或: 複製程式碼程式碼如下:function isNumeric(obj) {function isNumeric(obj) { (parseFloat(obj)) && isFinite(obj);}
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn