parseInt()的最大基数?

时间:2012-11-05 15:10:23

标签: javascript parsing

parseInt()的第二个参数定义了第一个参数被解析到的基数。我一直在玩一些数字,发现如果基数大于36,我就不会得到正确的答案:

parseInt("1", 36);
// -> 1

parseInt("1", 37);
// -> NaN

有限制吗?为什么是36?

我在运行测试时使用了chrome

3 个答案:

答案 0 :(得分:19)

36是10 + 26.字母表中有26个字母,加上0-9。 这是你可以使用的最大基数。

答案 1 :(得分:11)

The ECMAScript specification specifies the maximum radix as 36.

  • 有10位数字:(0-9)
  • 共有26个字符:(a-z)
10 + 26 = 36

还应该提到,支持高于36的基数是可能的。可以调整规范以使用区分大小写的字符作为基数> 36,比如说37-62。 可以使用特殊字符,例如带符号和重音字母

他们不是的原因是,它含糊不清,而且不必要。自定义基数的解析算法不应该太困难,可以根据需要编写。

将基数限制为36有助于平衡性能与效用。

答案 2 :(得分:3)

最大值为36,因为这是标准字母表中的数字和字符数(0123456789abcdefghijklmnopqrstuvwxyz)。如果你想知道这样的其他事情,你可能想要bookmark the official ECMAScript language specification,它就在那里