27
Sep
Learn why does parseInt(1/0, 19) return 18?
The result of 1/0 is Infinity.
parseInt treats its first argument as a string which means first of all Infinity.toString() is called, producing the string “Infinity”. So it works the same as if you asked it to convert “Infinity” in base 19 to decimal.
Here are the digits in base 19 along with their decimal values:
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
What happens next is that parseInt scans the input “Infinity” to find which part of it can be parsed and stops after accepting the first I (because n is not a valid digit in base 19).
Therefore it behaves as if you called parseInt(“I”, 19), which converts to decimal 18 by the table above.