源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

关于jQuery $.isNumeric vs. $.isNaN vs. isNaN

  • 时间:2022-02-09 06:44 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:关于jQuery $.isNumeric vs. $.isNaN vs. isNaN
[b]在jQuery中,有几种方式可以判断一个对象是否是数字,或者可否转换为数字。 [/b]首先,jQuery.isNaN()在最新版本中已经被移除了(1.7之后),取而代之的是  jQuery.isNumeric ()。这并不奇怪,因为jQuery.isNaN() 同Javascript内置的isNaN()名字相同,但是语义却不完全相同,在一定意义上会造成歧义。 jQuery.isNumeric ()有着与其相似的功能,同时也解决了歧义问题。 jQuery.isNumeric ()检查传进的参数是否是数字或者可否转换为数字;Javascript 内置的isNaN() 检查传进的参数是否是一个合法的数字,典型的例子是0/0。 [b]具体区别可以看测试:[/b] [b]测试数据:[/b]
[u]复制代码[/u] 代码如下:
var values = [ "-10", , xFF, "0xFF", "8e5", .1415, +10, , "", {}, NaN, null, true, Infinity, undefined, false ];
[b]使用jQuery verision1.6:[/b]
[u]复制代码[/u] 代码如下:
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
[b]使用 jQuery version1.7[/b]
[u]复制代码[/u] 代码如下:
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() 结果是一样的, 而 jQuery $.isNumeric() 同Javascript 自带的!isNaN()在对空字符串、null、true/false、Infinity的处理是不同的。因为isNaN()只是检查传入的值是否是NaN类型。 NaN (Not a Number)是一个数字数据类型,表明未定义(undefined )或无法表示(unrepresentable )的值,尤其是浮点数计算值。 因此,isNaN(null) == false 在语义上是正确的,因为null不是NaN(事实上null、ture/false等等会先转为数字0)。但是如果用!isNaN()来判断传入的值可否转换为数字,又不大恰当。而Javascript另一种方式 typeof num == 'number' 则无法检测字符串情况。因此如果不使用 jQuery $.isNumeric(),则最好还是重写一个方法判断,比如用正则来判断或者:
[u]复制代码[/u] 代码如下:
function isNumeric(obj) {     return !isNaN(parseFloat(obj)) && isFinite(obj); }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部