parseInt()
的第二个参数定义了第一个参数被解析到的基数。我一直在玩一些数字,发现如果基数大于36,我就不会得到正确的答案:
parseInt("1", 36);
// -> 1
parseInt("1", 37);
// -> NaN
有限制吗?为什么是36?
我在运行测试时使用了chrome
答案 0 :(得分:19)
36是10 + 26.字母表中有26个字母,加上0-9。 这是你可以使用的最大基数。
答案 1 :(得分:11)
The ECMAScript specification specifies the maximum radix as 36.
10 + 26 = 36
还应该提到,支持高于36
的基数是可能的。可以调整规范以使用区分大小写的字符作为基数> 36,比如说37-62。 可以使用特殊字符,例如带符号和重音字母。
他们不是的原因是,它含糊不清,而且不必要。自定义基数的解析算法不应该太困难,可以根据需要编写。
将基数限制为36有助于平衡性能与效用。
答案 2 :(得分:3)
最大值为36,因为这是标准字母表中的数字和字符数(0123456789abcdefghijklmnopqrstuvwxyz)。如果你想知道这样的其他事情,你可能想要bookmark the official ECMAScript language specification,它就在那里