传递一个整数作为`toString`的参数怎么办?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了传递一个整数作为`toString`的参数怎么办?相关的知识,希望对你有一定的参考价值。

我正在学习javascript课程,但没有关于toString方法的指导,这两个输出在JavaScript中的目的是什么:

  1. >>> (35).toString(36) "z"
  2. (35).toString(37) >>>抛出一个RangeError

我完全不知道为什么我得到这些结果,如果有人能够对此有所了解,我将非常感激。

答案

tldr:Number.prototype.toString可以使用一个名为radix的参数,该参数指定用于相关数字的字符串表示的数字基数。


Object.prototype.toString()

一个对象的toString方法应该返回该对象的字符串表示(我说“假设”因为你可以修改它,所以它不返回一个字符串)。 35显然不是一个对象,它是一个原始的,但你正在使用它像一个对象,这导致JavaScript为该Number调用创建一个临时的toString对象(请参阅this StackOverflow对自动装箱的回答)。

Number.prototype.toString()

关于通过将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"]):

  1. 生成数字35的字符串表示形式。
  2. 将步骤#1中生成的字符串转换为radix指定的数字基数。

例如,如果您想要35的字符串表示形式,则采用二进制形式:

console.log(35..toString(2)); // "100011"
另一答案

toString将Int转换为字符串。 int用于数学,字符串用作文本,不应对其进行数学运算。

也许您正在查看的更多代码将更多地了解脚本中发生的事情

以上是关于传递一个整数作为`toString`的参数怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

pthread_create:分配(malloc)将整数作为最后一个参数传递的优势?

问: js要传string型参数,可以直接将变量用toString()方法转换吗?

如何在 Volley 的 POST 请求中将整数作为参数传递?

当参数作为整数传递时,Laravel 返回零而不是实际的单元格值

运行java jar时整数数组作为参数

如何将表名和选定字段作为参数传递