美文网首页
Number类型(NaN和isNaN)

Number类型(NaN和isNaN)

作者: sna_ | 来源:发表于2020-08-17 20:38 被阅读0次

    1.number类型

    NaN:NaN属性代表一个“不是数字”的值。这个特殊的值是因为运算不能执行而导致的,不能执行的原因要么是因为其中的运算对象之一非数字(例如, "abc" / 4),要么是因为运算的结果非数字(例如,除数为零)。

    虽然 NaN 意味着“不是数字”,但是它的类型是 Number!

    console.log(typeof  NaN === "number"); //  "true"

    注意: NaN 和任何东西比较——甚至是它自己本身!——结果是false:

    2.isNaN: 检测当前值是否不是有效数字,返回true代表不是有效数字,false是有效数字

    isNaN(null) //false   

    isNaN(isNaN) //true   

    isNaN(undefined) //true 

    isNaN(true) //false 

    isNaN(false) //false

    3.isNaN检测机制:

    1.首先验证当前要检测得值是否为数字类型,如果不是浏览器会默认的把值转换成数字类型, 把非数字类型的值转换成数字,其他基本类型转换为数字,直接用number这个方法转换

    字符串转数字:

    Number('13') -> 13

    Number('13px') -> NaN 如果当前字符串中出现任意一个非有效数字字符,结果则为NaN

    Number('13.5') -> 13.5 可以识别小数

    布尔转数字:

    Number(true)->1

    Number(false)->0

    其他:

    Number(null) -> 0

    Number(undefined) -> NaN

    对象:

    ({}).toString() -> '[object  object]' ->NaN

    数组:

    [12,13].toString() ->'12,13'->NaN    [12].toString() ->'12'->12

    正则:

    /^$/.toString()->'/^$/' ->NaNNumber('')->0 

    [].toString()->' '  => isNaN([])->false 

    先把[] 转成字符串''  字符串转成数数字是0 ,所以最后的结果:  isNaN(0) 是false

    4.当前检测的值已经是数字类型,是有效数字返回false,不是返回true(数字类型中只有NaN不是有效数字,其余都是有效数字)

    parseInt/ parseFloat 等同于number 也是为了把其他类型的值转换为数字类型

    parseInt 把一个字符串中的整数部分解析出来,从字符串最左边字符开始找有效数字字符,并转换为数字,

    parseInt('13.5px') =>13

    parseFloat把一个字符串中的小数(浮点数)部分解析出来

    parseFloat('13.5px')=>13.5

    相关文章

      网友评论

          本文标题:Number类型(NaN和isNaN)

          本文链接:https://www.haomeiwen.com/subject/jmxcjktx.html