RangeError: radix 必须为整数

Number.prototype.toString()BigInt.prototype.toString() 方法的可选 radix 参数被指定且不在 2 到 36 之间时,就会出现 JavaScript 异常“radix 必须是至少为 2 且不超过 36 的整数”。

消息

RangeError: toString() radix argument must be between 2 and 36 (V8-based & Safari)
RangeError: radix must be an integer at least 2 and no greater than 36 (Firefox)

错误类型

哪里出错了?

指定了 Number.prototype.toString()BigInt.prototype.toString() 方法的可选 radix 参数。它的值必须是 2 到 36 之间的整数(数字),指定用于表示数值的数字系统基数。例如,十进制(以 10 为基数)数字 169 在十六进制(以 16 为基数)中表示为 A9。

为什么此参数的值限制为 36?大于 10 的基数使用字母字符作为数字;因此,基数不能大于 36,因为拉丁字母(英语和许多其他语言使用)只有 26 个字符。

最常见的基数

示例

无效情况

js
(42).toString(0);
(42).toString(1);
(42).toString(37);
(42).toString(150);
// You cannot use a string like this for formatting:
(12071989).toString("MM-dd-yyyy");

有效情况

js
(42).toString(2); // "101010" (binary)
(13).toString(8); // "15" (octal)
(0x42).toString(10); // "66" (decimal)
(100000).toString(16); // "186a0" (hexadecimal)

另请参阅