小编典典

为什么 parseInt(1/0, 19) 返回 18?

all

我在 JavaScript 中有一个烦人的问题。

> parseInt(1 / 0, 19)
> 18

为什么parseInt函数返回18


阅读 165

收藏
2022-03-01

共1个答案

小编典典

结果1/0Infinity

parseInt将它的第一个参数视为一个字符串,这意味着首先Infinity.toString()被调用,产生字符串"Infinity"。所以它的工作原理与您要求它以"Infinity"19
为基数转换为十进制一样。

以下是以 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(因为n不是以 19
为基数的有效数字)。

因此,它的行为就像您调用parseInt("I", 19)了 ,它通过上表转换为十进制 18。

2022-03-01