数值
对象转数值的规则:
- 调用对象的
valueOf
方法得到原始值,如果结果是原始数据类型,则直接转换为数值 - 如果第1步中返回的仍不是原始数据类型,则继续调用
toString
方法并转换数值 - 如果既没有
valueOf
方法也没有toString
方法,则抛出错误
其他类型转换数值的规则
原始类型 | 转换规则 | 举例 |
---|---|---|
string | Number.parseInt/Number.parseFloat | '123' -> 123 |
boolean | true为1,false为0 | - |
undefined | NaN | - |
null | 0 | - |
symbol | 转换报错 | - |
parseFloat
规则
isNaN与Number.isNaN
Number.isNaN
是isNaN
的健壮版本,它会判断传入参数是否是number类型,如果不是,直接返回false。
而isNaN
会尝试将传入参数转成number,如果失败了,则返回true,其内部原理可以描述为:
js
isNaN('123x')
// 1. Number('123x') => NaN
// 2. Number.isNaN(NaN) => true