Number parseInt parseFloat
这三种方法都可以将值转为数字,但处理方式各不相同
Number
Number(value)
- value 任意值,如果无法转为数字,则返回NaN
如果传入对象,会先调用对象的valueOf方法.如果valueOf的返回值不是基本类型,再调用对象的toString方法
1 | var o = {}; |
注 一元加操作符的转换方式和Number相同
parseInt
接受字符串,返回整数
parseInt(string, radix)
- string 字符串,如果传入参数不是字符串(包括数字),则先使用toString将其转为字符串.
- radix 参数string的基数,接受以下数值:
- 0或未指定: 0x开头字符串以16进制解析,其他字符串以10进制解析
- 2~36: 将字符串以2~36进制解析
1 | parseInt('0x11') // 17 |
如果string的第一个非空格字符"不是正/负号或数字",则返回NaN
1 | parseInt('.11') // NaN |
parseInt不支持科学计数法,会将"Infinity"和"e表示法"当作普通字符处理
1 | parseInt('Infinity') // NaN |
parseFloat
接受字符串,返回浮点数
parseFloat(string)
- string 字符串,如果传入参数不是字符串(包括数字),则先使用toString将其转为字符串
只解析10进制格式的字符串,16进制始终被转为0
1 | parseFloat('0x11') // 0 |
如果string的第一个非空格字符"不是正/负号或数字",则返回NaN
不过parseFloat能解析".1",而parseInt不能.
1 | parseFloat('.') // NaN |
注 这三种方法都会自动忽略字符前后空格
对照表
| 参数 | Number | parseInt | parseFloat |
|---|---|---|---|
| 不传入参数 | 0 | NaN | NaN |
| null | 0 | NaN | NaN |
| undefined | NaN | NaN | NaN |
| true | 1 | NaN | NaN |
| false | 0 | NaN | NaN |
| NaN | NaN | NaN | NaN |
| Infinity | Infinity | NaN | Infinity |
| -Infinity | -Infinity | NaN | -Infinity |
| 11 | 11 | 11 | 11 |
| 011 | 9 | 9 | 9 |
| 0b11 | 3 | 3 | 3 |
| 0x11 | 17 | 17 | 17 |
| 11e-7 | 0.0000011 | 0 | 0.0000011 |
| 1e-7 | 1e-7 | 1 | 1e-7 |
| 0.0000001 | 1e-7 | 1 | 1e-7 |
| '' | 0 | NaN | NaN |
| 'a' | NaN | NaN | NaN |
| '11a' | NaN | 11 | 11 |
| '11' | 11 | 11 | 11 |
| ' 11' | 11 | 11 | 11 |
| '011' | 11 | 11 | 11 |
| '11.0' | 11 | 11 | 11 |
| '11.' | 11 | 11 | 11 |
| '0.11' | 0.11 | 0 | 0.11 |
| '.11' | 0.11 | NaN | 0.11 |
| '0b11' | 3 | 0 | 0 |
| '0o11' | 9 | 0 | 0 |
| '0x11' | 17 | 17 | 0 |
| '0c11' | NaN | 0 | 0 |
| '11e2' | 1100 | 11 | 1100 |
| '11e-2' | 0.11 | 11 | 0.11 |
| '11e-7' | 0.0000011 | 11 | 0.0000011 |
| '1e-7' | 1e-7 | 1 | 1e-7 |
| '0.0000001' | 1e-7 | 0 | 1e-7 |
| 'Infinity' | Infinity | NaN | Infinity |
| '-Infinity' | -Infinity | NaN | -Infinity |
| {} | NaN | NaN | NaN |
| {a: 11} | NaN | NaN | NaN |
| [] | 0 | NaN | NaN |
| [11] | 11 | 11 | 11 |
| [[11]] | 11 | 11 | 11 |
| [11, 11] | NaN | 11 | 11 |