在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()
-10 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
false true false

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);
}

  

关于jQuery $.isNumeric vs. $.isNaN vs. isNaN的更多相关文章

  1. 对属性NaN的理解纠正和对Number.isNaN() 、isNaN()方法的辨析

    1.属性NaN的误解纠正 NaN (Not a Number)在w3c 中定义的是非数字的特殊值 ,它的对象是Number ,所以并不是任何非数字类型的值都会等于NaN,只有在算术运算或数据类型转换出 ...

  2. jQuery $.isNumeric vs. $.isNaN vs. isNaN

    在jQuery中,有几种方式可以判断一个对象是否是数字,或者可否转换为数字. 首先,jQuery.isNaN()在最新版本中已经被移除了(1.7之后),取而代之的是  jQuery.isNumeric ...

  3. Number.isNaN和isNaN

    isNaN会通过Number方法,试图将字符串"测试"转换成Number类型,但转换失败了,因为 Number('测试') 的结果为NaN ,所以最后返回true. 而Number ...

  4. jQuery.isNumeric() 和 js isNaN()

    jQuery.isNumeric( value ) Description: 判断指定参数是否是一个数字值(字符串形式的数字也符合条件),返回 true 或者 false. Example: $.is ...

  5. 你可能不知道的 NaN 以及 underscore 1.8.3 _.isNaN 的一个 BUG

    这篇文章并不在我的 underscore 源码解读计划中,直到 @pod4g 同学回复了我的 issue(详见 https://github.com/hanzichi/underscore-analy ...

  6. 关于isNAN()函数内进行的莫名其妙的隐式转换?!

    isNaN(NaN); // true isNaN(undefined); // true isNaN({}); // true isNaN(true); // false isNaN(null); ...

  7. 内置函数isNaN()

    NaN(not a number)的产生:算术运算返回一个未定义的或无法表示的值 1.NaN并不一定用于表示某些值超出表示范围的情况.将某些不能强制转换为数值的非数值转换为数值的时候,也会得到NaN. ...

  8. JavaScript学习笔记-----NaN、isNan

    NaN  /  Number.NaN 全局属性 NaN 的值表示不是一个数字(Not-A-Number), NaN 属性的初始值就是 NaN,和 Number.NaN 的值一样. 在现代浏览器中(ES ...

  9. JS中的NaN和isNaN,简直是双重人格?

     number数字类型 包括数字和NaN,NaN:not a number 但是它是数字类型的   isNaN的用法:检测当前值是否不是有效数字,返回true代表不是有效数字,返回false是有效数字 ...

随机推荐

  1. Delphi的BPL介绍和使用 转

    了解BPL和DLL的关系将有助于我们更好地理解DELPHI在构件制作.运用和动态.静态编译的工作方式.对初学DELPHI但仍对DELPHI开发不甚清晰的朋友有一定帮助.BPL vs. DLL(原文ht ...

  2. ASP.NET内部原理(HttpHandler和HttpModule)

    [IT168 技术文档]在以前的ASP时候,当请求一个*.asp页面文件的时候,这个HTTP请求首先会被一个名为 inetinfo.exe进程所截获,这个进程实际上就是www服务.截获之后它会将这个请 ...

  3. Android开发必知--几种不同对话框的实现

    在开发过程中,与用户交互式免不了会用到对话框以实现更好的用户体验,所以掌握几种对话框的实现方法还是非常有必要的.在看具体实例之前先对AlertDialog做一个简单介绍.AlertDialog是功能最 ...

  4. Response.Write,Page.RegisterClientScriptBlock和Page.RegisterStartupScript的区别

    Response.Write("<script>");输出在文件头部,一打开就执行. RegisterClientScriptBlock一般返回的是客户端函数的包装, ...

  5. LR(1)表生成算法演示程序

    /* * LR 转换表 * + Goto 记录表 * + 状态转换表 */ #include <stdio.h> #include <stdlib.h> #include &l ...

  6. nyoj 1036 非洲小孩【贪心区间选点】

    非洲小孩 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 家住非洲的小孩,都很黑.为什么呢?第一,他们地处热带,太阳辐射严重.第二,他们不经常洗澡.(常年缺水,怎么洗 ...

  7. PAT 1017. Queueing at Bank

    Suppose a bank has K windows open for service.  There is a yellow line in front of the windows which ...

  8. C#环境下的数值计算库:MathNet

    下面用一个简单的例子来说明MathNet的使用方法: 1. 进入MathNet官网找到数值计算库Math.NET Iridium(Numerics)并下载: 2. 将下载的文件解压缩,在目录下的Bin ...

  9. rails + mongoid 使用

    1. 测试环境 2. 创建工程 rails new mongoid_app --skip-active-record --skip-test-unit --skip-bundle 3. 修改gemfi ...

  10. android 73 下载图片

    package com.ithiema.imageviewer; import java.io.InputStream; import java.net.HttpURLConnection; impo ...