parseInt()的最大基数?

Amb*_*mps 9 javascript parsing

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

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

parseInt("1", 37);
// -> NaN
Run Code Online (Sandbox Code Playgroud)

有限制吗?为什么是36?

我在运行测试时使用的是chrome

gil*_*ilm 19

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


zzz*_*Bov 11

ECMAScript规范将最大基数指定为36.

  • 有10位数字:(0-9)
  • 共有26个字符:(az)
10 + 26 = 36
Run Code Online (Sandbox Code Playgroud)

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

它们不是的原因是,它是模棱两可的,而且是不必要的.自定义基数的解析算法不应该太困难,并且可以根据需要编写.

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