JavaScript类型转换是如何工作的,以及为什么要进行类型转换?

3

var x = 5;

如果我运行console.log('The number is ' + x);

输出结果为The number is 5;

但是我的问题是,为什么数字会被转换成字符串呢?

2个回答

3
这是因为你在console.log命令中写的内容输出了一个字符串,因此当你使用'The number is ' + x时,实际上你做的是将字符串连接起来。
另一方面,如果你使用console.log(x),你会得到一个整数响应。
你可以在这里检查:

var x = 5;

console.log("The number is " + x);
console.log(typeof ("The number is " + x));

console.log(x);
console.log(typeof x);

console.log(x + x);
console.log(typeof (x + x));

你可以在MDN文档中查看更多信息。

1
如果您试图将Number添加到String中,则默认操作是在没有参数的情况下调用Number上的toString。默认参数为10(即基数为10),这将将其转换为字符串文字“5”,然后将其连接到“The number is”中。最后,console.log获取此参数并对其调用util.inspect,并且对于字符串参数的此调用的输出是以其字符串形式打印输入参数到process.std.out,并附加行结束符。示例实现:https://console.spec.whatwg.org/#nodejs-printer-example。 - Supernovah

1
在类型强制转换中,即比较或计算两个不同类型的操作数时,其中一个将被转换为等效类型。将number转换为string的原因是因为每个数字都可以是字符串,但相反并非总是如此,因此类型强制转换始终将数字转换为字符串。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接