也许这是一个蹩脚的问题,如果是这样,我真诚地道歉。
我遇到了一个有趣的挑战。
<button onClick="myFunc()">Click Me</button>
<p id="test"></p>
<script>
function myFunc() {
var n = 15
var a = n.toString(); // outputs 15
var b = n.toString(2); // outputs 1111
var c = n.toString(9); // outputs 16
var d = n.toString(18); // outputs f
var e = n.toString(36); // outputs f
var total = a + "<br>" + b + "<br>" + c + "<br>" + d + "<br>" + e;
document.getElementById('test').innerHTML=total;
}
</script>
我理解2将输出二进制值,而18&amp; 36将输出十六进制值。但是当我把它放37时它不输出任何东西。
例如:
var f = n.toString(37);
不输出任何内容。
在控制台中它说: RangeError:radix必须是一个至少为2且不大于36 的整数。为什么呢?
答案 0 :(得分:7)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Bad_radix
为什么限于36?大于10的基数使用字母字符作为数字。因此,基数不能大于36,因为拉丁字母只有26个字符。
更重要的是,基数18你不会得到十六进制值。十六进制是基数16
答案 1 :(得分:0)
正如另一个答案中的链接所述,这是因为以36为底的数字从0到z。对于大于36的基数,应添加一些其他非字母数字符号作为数字。
无论如何,如您所见,以36为基数足以调用大多数js方法
let bar = {baz(){alert(":)")}};
eval(14643.314021776406.toString(36))()