2016-05-24 18 views
-1

所以,这里是东西为什么Javascript的console.log会用 - 符号和+符号连接来减去?

console.log('2' - '1')打印1这是预期的字符串转换为数字和在 - 符号上操作。但是当console.log('2' + '1')被执行时,它会打印21个连接。有人可以解释这种行为背后的原因是什么?

+3

与控制台无关......这就是js字符串连接的工作原理....'string + string = string'或'string + number = string'。没有魔力 – charlietfl

+0

为什么有一个downvote?这是一个有效的问题。 – Araknid

回答

4

如果你有两个字符串,你可以连接它们与+。这并不罕见,许多语言都这样做。

字符串没有-运算符。所以当你使用它时,它会回到现有的-运营商,它只适用于数字。而Javascript正试图通过将字符串自动转换为数字来帮助您。这并不常见,但看起来你期待它,所以这里并不令人意外。

如果要将字符串(或可能是字符串的内容)转换为数字,可以使用+x。你需要将两者都转换,因为如果其中任何一个是字符串,就会得到串联。

console.log((+'2') + (+'1')); // logs 3 
+0

我期望+连接但不是 - 以这种方式进行操作,但现在混乱很明显。 – Araknid