调用数字的toString方法

时间:2019-07-01 10:42:07

标签: javascript

我不明白这里发生了什么。代码如何显示11?

var z = 5;
 console.log(z.toString.call(16)); //output 16
var z = 5;
 console.log(z.toString.call(16,15));// output 11

2 个答案:

答案 0 :(得分:1)

第二个参数(如果有)是您希望与之转换的基数(基数)。

您已指定应使用基数15,因此将值16转换为字符串“ 11”(1 * 15 +1)。

答案 1 :(得分:1)

Number#toString方法使用一个基数参数,并将数字转换为该参数提供的基数:

var decimal = 10;

var binary = decimal.toString(2);

console.log(binary)

使用Function.call时,提供的 first 参数是方法的this上下文。本质上,您可以更改起始号码:

var num = 10;

var otherNumber = 42;

console.log(num.toString.call(otherNumber));
//          ^^^               ^^^^^^^^^^^
//ignored ___|                     |
//the new `this` __________________|

当您向.call提供 second 参数时,该参数成为该方法的 first 参数。

因此,考虑到这一点,当您致电z.toString.call(16,15)时,z就无关紧要了,实际上是在致电

console.log((16).toString(15))

在以15为底的基数中,十进制16实际上已转换为11