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);
    }
  • 相关阅读:
    SQL命令
    MySQL、Oracle、SQL Server
    函数调用
    php 读取图片显示在页面上 demo
    浅谈PHP正则表达式中修饰符/i, /is, /s, /isU
    jquery $.ajax()方法
    HTML 字符实体
    php 内置支持的标签和属性
    java-03 变量与运算符
    java-02 JDK安装与环境变量配置&安装编程IDE
  • 原文地址:https://www.cnblogs.com/chorkiu/p/12073340.html
Copyright © 2011-2022 走看看