parseInt用法详解
今天在 MDN 深究了下 parseInt 的用法,顿时觉得头要炸了,后来花了些时间总算搞明白了,写下来记录下,免得以后范蒙。
1. 用法
parseInt(string, radix);
一句话描述其作用就是将用 radix 进制表示的 string 最终转换为十进制。
2. 具体实践
举几个基本的小栗子:
1 | parseInt('255') // 255 不写 radix 参数指定几进制时,一般默认采用十进制,建议始终带第二个参数 |
看过这些,是不是想说挺简单的啊,也就那么回事儿。那我们来看几类特殊的东西,恶心一下。
(1) 以正常进制数作为 radix
1 | parseInt(' 11', 10) // 11 从第一个不是空字符的数字开始 parse |
(2) 以 0 或 undefined 作为 radix
1 | parseInt('011', 0 或 undefined) // es3 9 | es5+ 11 |
结论:radix 为 0 或者 undefined,会根据情况解析为 8进制、10进制、16进制,
当去除空字符以 0 开头时, 数字会被认为是8进制进行parse,字符串在 es3 会认为是8进制,但 es5 废除了这个规则,按10进制处理。
当去除空字符以非0数字开头时,按10进制处理。
当去除空字符以 0x 开头时,无论是字符串还是整数都按 16 进制进行 parse。 0x后面直接紧跟字母会 parse 为 NaN, 如果是 16进制数后又加其他非数字字符串,则只 parse 数字部分。