为什么1 +'1'='11'但1 *'1'= 1

时间:2014-07-31 10:15:47

标签: javascript

如果操作

1 + '1'

将数字1转换为字符串并附加 对于后来的字符串,为什么不是

的情况

1 * '1'

5 个答案:

答案 0 :(得分:12)

因为+已超载。

+可能意味着添加字符串连接。在前一种情况下,JavaScript尝试进行字符串连接而不是添加,因此它将所有内容转换为字符串并执行字符串连接。在后一种情况下,唯一的选择是乘法,因此它将所有内容转换为可以相乘的内容并执行乘法。

dfsq在您的问题的评论中链接了specification of addition syntax,这解释了为什么JS尝试字符串连接而不是添加:它检查您添加的内容是否是字符串,然后如果其中至少有一个是,则尝试字符串连接 - 否则,尝试添加。

答案 1 :(得分:4)

+是字符串的连接运算符。结果,该数字被转换为字符串然后连接。连接优先于数字加法。如果您想要添加它们,请使用parseInt,例如1 + parseInt('1')

*根本不是字符串的有效运算符,因此它将字符串转换为数字然后执行操作。

这是一个简单的案例,因此操作数的顺序无关紧要。如果你变得更复杂,它往往会变得更有趣。例如:

1 + 1 + '1' = '21'
'1' + 1 + 1 = '111'

有关详细信息,请查看this MDN article on the matter

答案 2 :(得分:1)

+用于字符串连接 *用于倍增

在1 +'1''+'将连接1与'1'

您需要执行以下操作

1 + parseInt('1')

答案 3 :(得分:0)

在javascript +中表示连接。这就是为什么当你尝试将一个数字(即1)添加到字符串('1')时,它变为11.并且它将*视为多重,因此它将数字(1)与字符串('1')相乘并且结果为1.例如(1 * a = a)。

答案 4 :(得分:0)

“+”运算符用于字符串连接和普通数学加法,因此当我们在数字和字符串之间使用此运算符时,它将只连接这两个。 但是“*”运算符并不像它只会执行乘法,如果在数字和纯字符串之间使用它不会给出正确的输出。但是,如果它在数字之间使用并且再次使用字符串格式的数字,它将同时视为数字并给出这两者的乘法。