Javascript中的parseInt()给出奇怪的结果

Javascript中的parseInt()给出奇怪的结果,javascript,parseint,Javascript,Parseint,可能重复: 为什么在Javascript中parseInt(1/0,19)的计算结果为18?我知道19不是一个允许的基数,但有人能告诉我这里的情况如何吗?啊,快速javascript控制台给出了答案: > 1/0 Infinity > parseInt("Infinity", 19) 18 parseInt似乎将第一个参数转换为字符串,例如: > parseInt(11, 2) 3 因此,它转换字符串“无穷大”,解释了一切。为什么要除以零?+1,这很有趣:parseInt

可能重复:


为什么在Javascript中parseInt(1/0,19)的计算结果为18?我知道19不是一个允许的基数,但有人能告诉我这里的情况如何吗?

啊,快速javascript控制台给出了答案:

> 1/0
Infinity
> parseInt("Infinity", 19)
18
parseInt
似乎将第一个参数转换为字符串,例如:

> parseInt(11, 2)
3

因此,它转换字符串“无穷大”,解释了一切。

为什么要除以零?+1,这很有趣:
parseInt(1/0,15)-->NaN-parseInt(1/0,19)-->18-parseInt(1/0,20)-->18-parseInt(1/0,25)-->185011843-parseInt(1/0,28)-->324267766
假设我将一个表达式传递给从用户处获取的parseInt&用户可以键入他想要的任何内容。覆盖角落的案子很痛苦,但还是有人不得不这么做。19是一个允许的基数。。。一个更相关的问题是,你为什么要转换到base-19?谢谢你指出了正确的位置。:)