为什么1 + '1'= & # 39; 11 & # 39;但是1 * & # 39;1 & # 39;

Why is 1 + '1' = '11' but 1*'1' = 1

本文关键字:但是 为什么      更新时间:2023-09-26

操作

1 + '1'

将数字1转换为字符串并追加到后面的字符串那么为什么

不是这样呢?

1 * '1'

因为+过载

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

dfsq在您的问题下的评论中链接了添加语法的规范,这解释了为什么JS尝试字符串连接而不是添加:它检查您添加在一起的东西是否为字符串,然后如果其中至少有一个是,尝试字符串连接-否则,尝试添加。

+是字符串的连接操作符。结果,该数字被转换为字符串,然后进行连接。串联优先于数字加法。如果您想让它添加它们,则使用parseInt,如1 + parseInt('1')

*根本不是一个有效的字符串操作符,因此它将字符串转换为数字,然后再进行操作。

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

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

有关更多信息,请查看MDN关于此事的文章

+用于字符串连接*用于乘法

In 1 +' 1' '+'将连接1和'1'

你需要做以下事情

1 + parseInt('1')

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

"+"运算符用于字符串连接和普通的数学加法,所以当我们在数字和字符串之间使用这个运算符时,它只会将这两个连接起来。但是"*"运算符不像那样,它只会执行乘法,如果它在数字和纯字符串之间使用,它不会给出正确的输出。但是,如果在数字和字符串格式的数字之间使用,它将把两者都视为数字并给出两者的乘法。

相关文章: