• 建议3:正确处理Javascript特殊值---(1)正确使用NaN和Infinity


      NaN时IEEE 754中定义的一个特殊的数量值.他不表示一个数字,尽管下面的表达式返回的是true

    typeof(NaN) === 'number'  //true

      该值可能会在试图将非数字形式的字符串转换为数字时产生,例如

    + '0'       //0
    + 'oops'    //NaN

      如果NaN是数字运算中的一个运算数,那么它与其他运算数的运算结果就会使NaN.如果有一个表达式产生出NaN的结果,那么至少其中一个运算符是NaN或者在某个地方产生了NaN.

      可以对NaN进行检测,但是typeof不能辨别数字和NaN的区别,并且NaN不等同于它自己

    NaN === NaN   //false
    NaN !== NaN   //true

      所以,为了方便检测NaN值,JavaScript提供isNaN静态函数,以辨别数字与NaN区别

    isNaN(NaN)     //true
    isNaN(0)       //false
    isNaN('oops')  //true
    isNaN('0')     //false

       判断一个值是否可用做数字的最佳方法是使用isFinite函数,因为它会筛除掉NaN和Infinity.Infinity表示无穷大.当数值超过浮点数所能够表示的范围时,就要用Infinity表示.反之,负无穷大-Infinity.

      使用isFinite函数能够检测NaN,正负无穷大.如果是有限数值,或者可以转换为有限数值,那么将返回true,否则返回false.

      不幸的是,isFinite会试图把它的运算数转换为一个数字.因此,如果值不是一个数字,使用isFinite函数就不是一个有效的检测方法,这是可以自定义isNumber函数.

    var isNumber = function isNumber(value){
        return typeof value === 'number' && isFinite(value);
    }
  • 相关阅读:
    poj 2886 Who Gets the Most Candies?(线段树)
    Android开发之SoundPool使用具体解释
    Win8.1应用开发之动态磁贴
    开发人员获取苹果技术支持
    Win32 Windows编程 十二
    华为上机练习题--压缩字符串
    PS 滤镜算法原理 ——马赛克
    JS版汉字与拼音互转终极方案,附简单的JS拼音输入法
    mybatis入门基础----动态SQL
    windows上如何搭建Git Server
  • 原文地址:https://www.cnblogs.com/chorkiu/p/12073340.html
Copyright © 2020-2023  润新知