JavaScript中的加法不起作用。

22
7个回答

53

其中一项或者两项变量是字符串而非数字,这使得+执行的是字符串连接操作。

'2' + 2 === '22';  // true

2 + 2 === 4;  // true

其他算术运算符/ * -会对字符串进行toNumber转换。

'3' * '5' === 15;  // true

将字符串转换为数字的快速方法是使用一元的+运算符。

+'2' + 2 === 4;  // true

...或者使用您的变量:

+x + +y

3
+x + +y 工作得很好。非常感谢 RightSaidFred 和其他人。我明白了字符串和连接的概念。 - Theepan K.

9

+有两个用途。一个是加法,另一个则是字符串拼接。如果你的变量中有一个或两个为字符串,那么+就会将它们拼接起来。

若需要把字符串转换成数字,你需要使用parseIntparseFloat


3

Javascript中的+运算符可以根据其操作数的类型执行加法或连接操作。当数字与+一起使用时,它执行加法操作,但是当字符串与+一起使用时,它会连接(将字符串连接在一起)。


1
如果你要相加的数字是10和12,而它们的和应该是22,那么你应该这样做。
+10 + +12

如果其中一个或两个数字是字符串,结果可能会是像1012这样的字符串。

1
这个每次都有效。
((x*1) + (y*1))

1

一元加应该有效:

var totalVal = (+2) + (+2);

alert(totalVal);
// result 4

0
加法运算符的工作方式如下:
1)如果至少有一个操作数是字符串,则将另一个转换为字符串并执行连接操作;
1 + "2"        // "12"
"2" + "3"      // "23"
"2" + null     // "2null", null is converted to "null"

2) 在其他情况下,两个操作数都会被转换为数字:

1 + null      // 2, null is converted to 0
1 + undefined // NaN, undefined is converted to NaN

请查看文章JavaScript加法运算符的解密以获取更多详细信息。


为什么 1 + null = 1 + 0 = 2? - Mikhail Tikhonov

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