的第二个参数parseInt()
定义第一个参数解析到的基数。我一直在玩一些数字,发现如果基数大于 36,我就不再得到正确的答案:
parseInt("1", 36);
// -> 1
parseInt("1", 37);
// -> NaN
有限制吗?为什么是36?
我运行测试时使用的是 chrome
的第二个参数parseInt()
定义第一个参数解析到的基数。我一直在玩一些数字,发现如果基数大于 36,我就不再得到正确的答案:
parseInt("1", 36);
// -> 1
parseInt("1", 37);
// -> NaN
有限制吗?为什么是36?
我运行测试时使用的是 chrome
36 是 10 + 26。字母表中有 26 个字母,加上 0-9。这是您可以使用的最大基数。
10 + 26 = 36
还应该提到的是,可以支持高于 的基数36
。可以调整规范以使用区分大小写的字符来表示大于 36 的基数,例如 37-62。可以使用特殊字符,例如带有符号和重音字母的字符。
他们不是的原因是它模棱两可,而且没有必要。自定义基数的解析算法应该不会太难,并且可以根据需要编写。
将基数限制为 36 有助于平衡性能和实用性。
最大值为 36,因为这是标准字母表的数字和字符数 (0123456789abcdefghijklmnopqrstuvwxyz)。如果你想知道其他类似的东西,你可能想给官方的 ECMAScript 语言规范添加书签,它都在那里