之前在 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 再次解析字符串
- 返回结果
执行步骤说明如下: