Number类型(NaN和isNaN)

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容