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

在jQuery中,有几种方式可以判断一个对象是否是数字,或者可否转换为数字。

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

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

 通过例子说明下$.isNumeric() vs isNaN()的区别:

Demo html:

	<table border="1">
			<tr>
				<th>变量</th>
				<th>!isNaN()</th>
<!-- 	jquery1.7以后不存在该方法			<th>!$.isNaN()</th> -->
				<th>$.isNumberic()</th>
			</tr>
	</table>


 var values = ["-10",255,"0xFF","8e5",3.1415,10,100,"",{},NaN,null,true,Infinity,undefined,false];
 
 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><td>'
	                         +($.isNumeric( v )?"true":"false")
	                         +'</td></tr>' );
	}

  效果图:

变量!isNaN()$.isNumberic()
-10truetrue
255truetrue
0xFFtruetrue
8e5truetrue
3.1415truetrue
10truetrue
100truetrue
 truefalse
[object Object]falsefalse
NaNfalsefalse
nulltruefalse
truetruefalse
Infinitytruefalse
undefinedfalsefalse
falsetruefalse

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(),则最好还是重写一个方法判断,比如用正则来判断或者:

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

  

转载于:https://www.cnblogs.com/renxiaoren/p/5089207.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值