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
网友评论