补点JavaScript 基础:字符串到数字类型的转换(Number, +, ~~, parseInt, parseFloat)
JavaScript 中把一个字符串转换成数字类型的方法有多种,比如说对于变量a,常见的转换书写方式有Number(a)、+a、~~a、parseInt(a)、parseFloat(a),各自都有自己的适用场合,对这几种转换方式在这里稍微小结下:
- Number 和 + 的效果等价;
- 当转换失败时 ~~ 返回0,其他的返回NaN;
- ~~ 和 parseInt 不会返回浮点数;
- Number、+、~~ 将字符串看作一整体做转换,而parseInt、parseFloat 允许局部转换;
- 对于八进制表示,parseInt 可进行正确的转换,其他方式则会忽略前导0;
- parseFloat 不识别十六进制整数,其他方式可正确转换,另外十六进制带上小数均判定为无效的数字型。
Number | + | ~~ | parseInt | parseFloat | |
---|---|---|---|---|---|
'esun' | NaN | NaN | 0 | NaN | NaN |
'500' | 500 | 500 | 500 | 500 | 500 |
'500wan' | NaN | NaN | 0 | 500 | 500 |
'500.5' | 500.5 | 500.5 | 500 | 500 | 500.5 |
'0500' | 500 | 500 | 500 | 320 | 500 |
'0500.5' | 500.5 | 500.5 | 500 | 320 | 500.5 |
'0x500' | 1280 | 1280 | 1280 | 1280 | 0 |
'0x500.5' | NaN | NaN | 0 | 1280 | 0 |