为什么parseInt(1/0, 19)返回18?
为什么parseInt(1/0, 19)返回18?
我在JavaScript中有一个令人烦恼的问题。
> parseInt(1 / 0, 19) > 18
为什么parseInt
函数返回18
?
admin 更改状态以发布 2023年5月21日
1/0
的结果是 Infinity
。
parseInt
将其第一个参数视为字符串,这意味着首先调用 Infinity.toString()
,生成字符串 "Infinity"
。因此,它会像将基数为 19 的 "Infinity"
转换为十进制一样工作。
这里是基数为 19 的数字和它们的十进制值:
Base 19 Base 10 (decimal) --------------------------- 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 a 10 b 11 c 12 d 13 e 14 f 15 g 16 h 17 i 18
接下来,parseInt
扫描输入的 "Infinity"
,查找可解析的部分,并在首次接受 I
后停止(因为在基数为 19 的情况下,n
不是有效数字)。
因此,它的行为就像调用 parseInt("I", 19)
,该表格以上将其转换为十进制值 18。