如果操作
1 + '1'
,
将数字1转换为字符串并附加 对于后来的字符串,为什么不是
的情况 1 * '1'
答案 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)
“+”运算符用于字符串连接和普通数学加法,因此当我们在数字和字符串之间使用此运算符时,它将只连接这两个。 但是“*”运算符并不像它只会执行乘法,如果在数字和纯字符串之间使用它不会给出正确的输出。但是,如果它在数字之间使用并且再次使用字符串格式的数字,它将同时视为数字并给出这两者的乘法。