• js中判断一个变量是否为数字类型的疑问


    1.typeof(a)=="number" 是true,但是a instanceof Number却为false,不理解

    2.isNaN()不能判断一个变量是否为数字类型,isNaN(123)值为false,isNaN('123')值也为false。
    isNaN() 的实际作用跟它的名字isNaN并不一致,isNaN(NaN)值为true,isNaN(Number("xyz"))值为true,isNaN(“abc”)值为true,isNaN(123/0)值为false,

    所以它实际是将不能转换成number类型的其他类型及其自身NaN都判断为true,而除了其自身NaN外所有的number类型都判断为false(NaN的类型也是number),

    能转换成number类型的其他类型也判断为false,比如‘123’类型是string,但判断为false。
    typeof(num)=="number" 较为准确,但NaN也是number类型,Number("xyz")也是number类型,如果你只要区分123跟‘123’,那就没什么问题了,可以用typeof(num)==="number"。 如果要排除除数为0的情况,要再判断(num!==Infinity),即(typeof(num)=="number")&&(num!==Infinity)。
    再全面一点:(typeof(num)==="number")&&(num!==Infinity)&&!isNaN(num)

    资料:
    Number.isNaN()已经被添加到了ECMAScript 6中,Firefox已经实现了。
    代码如下:
    Number.isNaN = function (value) {
    return typeof value === 'number' && isNaN(value);
    };

  • 相关阅读:
    KVM安装配置
    cobbler配置解析
    denyhosts配置详解
    Rsync+sersync实现数据实时同步
    Linux启动提示Kernel panic
    oracle常用的数据字典
    Cachefiled
    from __future__ import division
    Java Map用法
    CCF系列之窗口(201403-2)
  • 原文地址:https://www.cnblogs.com/yyzyxy/p/7193577.html
Copyright © 2020-2023  润新知