parseInt(1/0, 19) が 18 を返すのはなぜですか? 質問する

parseInt(1/0, 19) が 18 を返すのはなぜですか? 質問する

JavaScriptで厄介な問題が発生しています。

> parseInt(1 / 0, 19)
> 18

なぜparseInt関数は を返すのでしょうか18?

ベストアンサー1

結果1/0Infinity

parseIntは最初の引数を文字列として扱います。つまり、まず がInfinity.toString()呼び出され、文字列 が生成されます。したがって、 19 進数を 10 進数に"Infinity"変換するように要求した場合と同じように動作します。"Infinity"

以下に、19 進数の数字とその 10 進数値を示します。

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)、上記の表に従って 10 進数の 18 に変換されます。

おすすめ記事