扫码关注官方订阅号
JavaScript 的 isFinite( ) 和 jQuery 的 $.isNumeric 有区别吗?是什么你?
小伙看你根骨奇佳,潜力无限,来学PHP伐。
isFinite(num)检测num是否为有限数字(或者可以被转化为有限数字),就是先对参数进行一个强制类型转换,进行一个num = Number(num),然后再对num进行判断。jq的isNumeric(str)也是先对参数进行强制类型转换,但是不同的是将其转为string类型,然后将这个string类型,利用parseFloat()将其转为Number类型,实现代码如下:
isFinite(num)
num
num = Number(num)
isNumeric(str)
string
parseFloat()
Number
var isNumeric = function( obj ) { return !Array.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0; };
isNumberic判断的是不是一个数字(两种形式:"1" or 1)具体区别:
isNumberic
"1"
1
console.log(isFinite(true)); // true console.log(isFinite([1])); // true console.log(isNumberic(true)); // false console.log(isNumberic([1])); // false
https://github.com/RubyLouvre/jsbook/issues/107
//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; },
看一下具体实现然后一个个慢慢比较吧 具体细微差距...
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
isFinite(num)检测num是否为有限数字(或者可以被转化为有限数字),就是先对参数进行一个强制类型转换,进行一个num = Number(num),然后再对num进行判断。jq的
isNumeric(str)也是先对参数进行强制类型转换,但是不同的是将其转为string类型,然后将这个string类型,利用parseFloat()将其转为Number类型,实现代码如下:isNumberic判断的是不是一个数字(两种形式:"1"or1)具体区别:
看一下具体实现
然后一个个慢慢比较吧 具体细微差距...