JavaScript 的 isFinite( ) 和 jQuery 的 $.isNumeric 有区别吗?是什么你?
JavaScript 的 isFinite( ) 和 jQuery 的 $.isNumeric 有区别吗?是什么你?
//jquery1.43~1.64
jQuery.isNaN = function(obj) {
return obj == null || !rdigit.test(obj) || isNaN(obj);
}
//jquery1.7 就是isNaN的取反版
jQuery.isNumeric = function(obj) {
return obj != null && rdigit.test(obj) && !isNaN(obj);
}
//jquery1.71~1.72
jQuery.isNumeric = function(obj) {
return !isNaN(parseFloat(obj)) && isFinite(obj);
}
//jquery2.1
jQuery.isNumeric = function(obj) {
return obj - parseFloat(obj) >= 0;
}
这是jquery 搞的isNumeric
到jquery3,就变得更复杂了
isNumeric: function( obj ) {
// parseFloat NaNs numeric-cast false positives (null|true|false|"")
// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
// subtraction forces infinities to NaN
// adding 1 corrects loss of precision from parseFloat (#15100)
return !jQuery.isArray( obj ) && ( obj - parseFloat( obj ) + 1 ) >= 0;
},
看一下具体实现
然后一个个慢慢比较吧 具体细微差距...
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
isFinite(num)
检测num
是否为有限数字(或者可以被转化为有限数字),就是先对参数进行一个强制类型转换,进行一个num = Number(num)
,然后再对num
进行判断。jq的
isNumeric(str)
也是先对参数进行强制类型转换,但是不同的是将其转为string
类型,然后将这个string
类型,利用parseFloat()
将其转为Number
类型,实现代码如下:isNumberic
判断的是不是一个数字(两种形式:"1"
or1
)具体区别: