zoukankan      html  css  js  c++  java
  • JQuery源码-------JQuery中数值型变量的判断isNumeric

    判断一个数值型变量的方法,在jquery中非常简单,只有一行代码。

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

    1、首先过滤掉数组类型的对象,因为数组Array类型肯定不是Number类型,使用了Array.isArray()方法来判断,过滤掉数组。

      这里不能把object类型的过滤掉,因为通过new Number()实例化的数值型变量,也是数字,不能过滤。  起主要作用的还是下面的一句“obj - parseFloat( obj) ”

    jQuery.isArray( obj )  

    2、看一下,parseFloat对各种类型变量的转换结果,

    console.log(parseFloat(NaN));         //NaN
    console.log(parseFloat(Infinity));    //Infinity
    console.log(parseFloat(undefined));   //NaN
    console.log(parseFloat(true));        //NaN
    console.log(parseFloat(false));       //NaN
    console.log(parseFloat({name:'hi'})); //NaN
    //另外说明 数组使用parseFolat会有不一样的结果:
    console.log(parseFloat([1,2]));  //返回  1
     

    这些类型的变量执行 obj-parseFlaot(obj)会返回NaN,也即不是数值型的。只有数值能通过验证。

  • 相关阅读:
    bzoj3196 Tyvj 1730 二逼平衡树
    bzoj2929 [Poi1999]洞穴攀行
    bzoj2325 [ZJOI2011]道馆之战
    cf413E Maze 2D
    bzoj2599 [IOI2011]Race
    bzoj1528 [POI2005]sam-Toy Cars
    UVA 796 Critical Links(无向图求桥)
    UVA 315 Network(无向图求割点)
    HDU 1269 迷宫城堡(求是否只有一个强连通分量)
    HDU 3974 Assign the task
  • 原文地址:https://www.cnblogs.com/lydialee/p/5010151.html
Copyright © 2011-2022 走看看