zoukankan      html  css  js  c++  java
  • 建议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);
    }
  • 相关阅读:
    Delphi接口的底层实现
    Delphi实现图像文本旋转特效完整代码
    delphi 原创应用工具箱
    用Delphi制作DLL
    Delphi在StatusBar上绘制ProgressBar
    Delphi之TDrawGrid绘制
    基于Delphi的接口编程入门
    Delphi中For In 语法应用实例
    w3c与微软(IE)事件注册区别 -Tom
    js 函数-Tom
  • 原文地址:https://www.cnblogs.com/chorkiu/p/12073340.html
Copyright © 2011-2022 走看看