parseInt(string, radix) 将一个字符串 string 转换为 radix 进制的整数, radix 为介于2-36之间的数。
如果 parseInt 遇到的字符不是指定 radix 参数中的数字,它将忽略该字符以及所有后续字符,并返回到该点为止已解析的整数值。 parseInt 将数字截断为整数值。 允许前导和尾随空格。
参数
/**
- string 要被解析的值。如果参数不是一个字符串,则将其转换为字符串。字符串开头的空白符将会被忽略。
- radix(可选) 从 2 到 36,代表该进位系统的数字。例如说指定 10 就等于指定十进位。请注意,通常预设值不是 10 进位!
*/
parseInt(string, radix)
parseInt(' 012u', 5) // 将 ' 012u' 装换成 5 进制数
过滤前面的空格直到下一个不能转换的位置得出 012 为5进制的数,
然后再将 012 转换成十进制 0 * 5^2^ + 1 * 5^1^ + 2 * 5^0^ = 7
parseInt(' 0125', 5) // 将 ' 0125' 装换成 5 进制数
过滤前面的空格直到下一个不能转换的位置得出 012(5 不能提出出来的原因是:因为 五 进制只有0、1、2、3、4) 为5进制的数,
然后再将 012 转换成十进制 0 * 5^2^ + 1 * 5^1^ + 2 * 5^0^ = 7
返回值
一个整数或者 NaN
当:
radix 小于 2 或大于 36 ,或第一个非空格字符不能转换为数字。则返回 NaN
如果 radix 是 undefined、0或未指定的,JavaScript会假定以下情况:
- 如果输入的 string以 "0x"或 "0x"(一个0,后面是小写或大写的X)开头,那么radix被假定为16,字符串的其余部分被解析为十六进制数。
parseInt('0x12', 0) '0x' 开头解析成 16 进制,1 * 16^1^ + 2 * 16^0^ = 18
- 如果输入的 string以 "0"(0)开头, radix被假定为8(八进制)或10(十进制)。具体选择哪一个radix取决于实现。ECMAScript 5 澄清了应该使用 10 (十进制),但不是所有的浏览器都支持。因此,在使用 parseInt 时,一定要指定一个 radix。
parseInt('015', 0) chrom Edge 都默认为(十进制)
- 如果输入的 string 以任何其他值开头, radix 是 10 (十进制)。
parseInt('512a', 0) 512
- 如果第一个字符不能转换为数字,parseInt会返回 NaN
parseInt('u512a', 0) NaN
考点
[1, 2, 3].forEach((item, index) => console.log(parseInt(item, index)))
第一次循环: parseInt(1, 0) // 在谷歌中进制位传 0 默认十进制 所以结果为 1
第二次循环: parseInt(2, 1) // 进制位传 1 时,所以返回 NaN
第三次循环: parseInt(3, 2) // 因为二进制只有 0、1 ,所以返回 NaN
【笔记不易,如对您有帮助,请点赞,谢谢】