时间:2021-05-25
在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( '<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
复制代码 代码如下:
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(),则最好还是重写一个方法判断,比如用正则来判断或者:
复制代码 代码如下:
function isNumeric(obj) {
return !isNaN(parseFloat(obj)) && isFinite(obj);
}
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
按值传递VS.按引用传递按值传递(callbyvalue)是最常用的求值策略:函数的形参是被调用时所传实参的副本。修改形参的值并不会影响实参。按引用传递(cal
01常温vs.低温,谁优谁劣?02日本如何成为酸奶大国?03功能型酸奶,开始起步04从常温到低温,再到功能型酸奶,酸奶行业的不断发展一方面需要乳制品企业投入力量
javascript中判断变量是否为数字的方法,这里主要介绍javascript里的isNaN()函数。功能:isNaN()函数用于检查其参数是否是非数字值。语
下面例举如下:如果大家有更好的方法的话望大家提出更好的方法。一:isNaN方法:isNaN()的意思是非数字,里面传入数字的话就返回false,传入的不是数字的
方法一:isNaN isNaN()的缺点就在于null、空格以及空串、’[123]'会被按照0来处理 NaN:NotaNumberfunctionisR