我参加过JavaScript课程,但没有toString
方法指南,这两个输出在JavaScript中的用途是什么:
(35).toString(36)
>>> "z"
!!!
(35).toString(37)
>>>抛出RangeError
!!!
我完全不知道为什么我会得到这些结果,如果有人能够对此有所了解,我将非常感激。
答案 0 :(得分:1)
tldr:Number.prototype.toString
可以使用名为radix
的参数,该参数指定用于相关数字的字符串表示的数字基础。
对象的toString
方法应该返回该对象的字符串表示形式(我说“假设”因为你可以修改它而不返回字符串)。 35
显然不是一个对象,它是一个原始对象,但是你像对象一样使用它,这会导致JavaScript为Number
调用创建一个临时toString
对象(参见{{ 3}} StackOverflow回答自动装箱)。
关于通过将36
传递给(35).toString
而导致的混乱行为:这是因为Number.prototype.toString()可以使用一个参数来指定用于字符串的数字基数该数字的表示形式,参数必须是35..toString([20])
和2
之间的整数(或任何其他可以强制转换为整数的值,例如36
),因此2 <= [radix] <= 36
(这意味着你的第二个例子将抛出Number.prototype.toString
)。
因此,当您执行(35).toString(36)
时,会发生两件事(不一定是我的订单,很可能是一步完成的,35 ====> [string representation of 35 in numeric format specified by "radix"]
):
35
的字符串表示。radix
指定的数字基数。 例如,如果您想要一个35
的字符串表示形式,则采用二进制形式:
console.log(35..toString(2)); // "100011"
有趣的事实:语法[integer]..[method]
在JavaScript中完全有效,第一个.
被解释为小数点,后者为.
,位于名称前面对象的方法/属性。
如果你不知道什么是“基数”(因为我之前没有这个问题,不,我不是穴居人,英语不是我的母语),这是我得到的定义Google搜索“radix含义”:
计算系统的基础。
答案 1 :(得分:-1)
toString将Int转换为字符串。 int用于数学,字符串用作文本,不应该对其进行数学运算。
您正在查看的代码可能会更多地了解脚本中发生的事情