之前在 Stack Overflow 看到题目 `parseInt(1/0, 19),代码执行的结果是 18,令人出乎意料。虽然这个题目是很少见到的情况(0作为被除数、采用19进制),但这个题目是一个很好的了解JavaScript parseInt
函数的机会。
要解答 parseInt(1/0, 19)
这个题目,要理解两个知识点:
1/0
的值是什么?parseInt
函数是怎么样将一个String
转化成Int
?
0 作为被除数
JavaScript里的所有算术运算采用的是IEEE 754 Standard。在 IEEE 754 Standard 中定义当被除数为 0 时,结果是(正/负)无穷大,无穷大在 JavaScript 中使用 Infinity
代表。所以表达式 1/0
的结果是正无穷大,即:Infinity
。
parseInt函数
parseInt
的定义是:接收一个字符串并返回一个基于指定基数的整型值。语法为:
|
|
parseInt
执行的步骤可以分为四个:
- 初步解析 string 参数
- 解析 radix 基数参数
- 根据 radix 再次解析字符串
- 返回结果
执行步骤说明如下: