JavaScript 的 isFinite( ) 和 jQuery 的 $.isNumeric 有区别吗?是什么你?
伊谢尔伦
伊谢尔伦 2017-04-11 11:21:09
[JavaScript讨论组]

JavaScript 的 isFinite( ) 和 jQuery 的 $.isNumeric 有区别吗?是什么你?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(2)
阿神

isFinite(num)检测num是否为有限数字(或者可以被转化为有限数字),就是先对参数进行一个强制类型转换,进行一个num = Number(num),然后再对num进行判断。
jq的isNumeric(str)也是先对参数进行强制类型转换,但是不同的是将其转为string类型,然后将这个string类型,利用parseFloat()将其转为Number类型,实现代码如下:

var isNumeric = function( obj ) {
    return !Array.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;
};

isNumberic判断的是不是一个数字(两种形式:"1" or 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;
        },

看一下具体实现
然后一个个慢慢比较吧 具体细微差距...

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号