方法
将字符串转为数字的方法有3种
- 使用
Number对字符串进行类型转换; - 使用
parseInt将字符串转换为整数; - 使用
parseFloat将字符串转换为整数或浮点数。
Number
Number对字符串进行类型转换。
- 将空字符转换为数字0
- 忽略首尾部空格
- 识别小数和科学技术法
- 字符串中不能出现非法字符
parseInt
parseInt方法将字符串转化为整数
- 空字符转换为NaN
- 忽略首尾部空格
- 不识别小数点和科学计数法
- 忽略数字后的非法字符
parseInt还支持第二个参数表示转换基数
parseInt(11, 2) // 3
二进制的11转换为10进制变成3
parseFloat
parseFloat方法将字符串转换为数字
- 将空字符转换为NaN
- 忽略首尾部空格
- 识别小数和科学计数法
- 忽略数字后的非法字符
区别
| 方法 | 识别.字符 | 识别e字符 | 空字符 | 首尾部空格 | 非法字符 |
|---|---|---|---|---|---|
| Number | true | true | 0 | 忽略 | 转化为NaN |
| parseInt | false | false | NaN | 忽略 | 忽略 |
| parseFloat | true | true | NaN | 忽略 | 忽略 |
例子
| 情况 | 例子 | Number | parseInt | parseFloat |
|---|---|---|---|---|
| 空字符 | "" | 0 | NaN | NaN |
| 整数 | "10" | 10 | 10 | 10 |
| 数字后方有非法字符 | "1只" | NaN | 1 | 1 |
| 空格在前方 | " 10" | 10 | 10 | 10 |
| 空格在中间 | "1 1" | NaN | 1 | 1 |
| 空格在末尾 | "10 " | 10 | 10 | 10 |
| 以0开头 | "01" | 1 | 1 | 1 |
| 小数 | "0.1" | 0.1 | 0 | 0.1 |
| 小数点开头 | ".1" | 0.1 | NaN | 0.1 |
| 含有"e" | "2e1" | 20 | 2 | 20 |
| "e"开头 | "e1" | NaN | NaN | NaN |
| "e"结尾 | "1e" | NaN | 1 | 1 |
对其中几种特殊情况解答:
- 首尾部空格会被忽略,字符串中间的空格会被识别为非法字符,所以
Number('1 1') = NaN - 对于".1",由于
parseInt不识别小数点,第一个字符非法,转换为NaN - 对于"2e1",由于
parseInt不识别e,忽略e及之后字符,转换为2 - 对于"e1",由于不包含科学计数法的底数,
e被识别为非法字符,全部转换为NaN - 对于"1e",由于不包含科学计数法的指数,
e被识别为非法字符,因此被Number转换为NaN,parseInt和parseFloat忽略e,转换为2