传递一个整数作为`toString`的参数怎么办?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了传递一个整数作为`toString`的参数怎么办?相关的知识,希望对你有一定的参考价值。
我正在学习javascript课程,但没有关于toString
方法的指导,这两个输出在JavaScript中的目的是什么:
- >>>
(35).toString(36)
"z"
! (35).toString(37)
>>>抛出一个RangeError
!
我完全不知道为什么我得到这些结果,如果有人能够对此有所了解,我将非常感激。
tldr:Number.prototype.toString
可以使用一个名为radix
的参数,该参数指定用于相关数字的字符串表示的数字基数。
Object.prototype.toString()
一个对象的toString
方法应该返回该对象的字符串表示(我说“假设”因为你可以修改它,所以它不返回一个字符串)。 35
显然不是一个对象,它是一个原始的,但你正在使用它像一个对象,这导致JavaScript为该Number
调用创建一个临时的toString
对象(请参阅this StackOverflow对自动装箱的回答)。
关于通过将36
传递给(35).toString
而获得的令人困惑的行为:这是因为Number.prototype.toString
可以使用一个参数来指定用于该数字的字符串表示的数字基数,该参数必须是整数(或任何其他在35..toString([20])
和2
之间可以被强制为整数的值,例如36
,所以2 <= [radix] <= 36
(这意味着你的第二个例子将抛出一个RangeError
)。
所以,当你执行(35).toString(36)
时,会发生两件事情(不一定按照我的顺序,很可能只需一步完成,35 ====> [string representation of 35 in numeric format specified by "radix"]
):
- 生成数字
35
的字符串表示形式。 - 将步骤#1中生成的字符串转换为
radix
指定的数字基数。
例如,如果您想要35
的字符串表示形式,则采用二进制形式:
console.log(35..toString(2)); // "100011"
toString将Int转换为字符串。 int用于数学,字符串用作文本,不应对其进行数学运算。
也许您正在查看的更多代码将更多地了解脚本中发生的事情
以上是关于传递一个整数作为`toString`的参数怎么办?的主要内容,如果未能解决你的问题,请参考以下文章
pthread_create:分配(malloc)将整数作为最后一个参数传递的优势?
问: js要传string型参数,可以直接将变量用toString()方法转换吗?
如何在 Volley 的 POST 请求中将整数作为参数传递?