添加在JavaScript中不起作用

添加在JavaScript中不起作用,javascript,addition,Javascript,Addition,我正在努力学习Javascript。在这里,我对以下代码感到困惑 当我在函数中放入x+y时,它出错了。例如2+2=22,5+7=57 但是,/,*,-正在工作。为什么+不起作用?请帮帮我。请提前多谢一个或两个变量是字符串而不是数字。这使得+执行字符串连接 '2' + 2 === '22'; // true 2 + 2 === 4; // true 其他算术运算符/*-将对字符串执行toNumber转换 将字符串转换为数字的快速方法是使用一元+运算符 +'2' + 2 === 4; /

我正在努力学习Javascript。在这里,我对以下代码感到困惑

当我在函数中放入
x+y
时,它出错了。例如
2+2=22
5+7=57


但是,
/
*
-
正在工作。为什么
+
不起作用?请帮帮我。请提前多谢

一个或两个变量是字符串而不是数字。这使得
+
执行字符串连接

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

2 + 2 === 4;  // true
其他算术运算符
/*-
将对字符串执行
toNumber
转换

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

+'2' + 2 === 4;  // true
…或使用您的变量:

+x + +y

在Javascript中,+运算符可以根据其操作数的类型执行加法或级联。当数字与+一起使用时,它使用加法,但当字符串与+一起使用时,它连接(连接字符串)而不是有两种用途。一个是加法,另一个是字符串连接。如果一个或两个变量都是字符串,则
+
将连接它们


您需要使用
parseInt
parseFloat
将字符串转换为数字。

一元加号应该可以:

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

alert(totalVal);
// result 4

如果你要加的数字是10和12,如果它们的结果和应该是22,那么你可能应该这样做

+10 + +12
如果一个或两个数字都是字符串,则结果可能是类似1012的字符串。

每次都是这样

((x*1) + (y*1))

加法运算符的工作方式如下:
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

查看帖子了解更多详细信息。

+x++y工作正常。非常感谢RightSaidFred和其他人。我想到了字符串和连接。为什么1+null=1+0=2?
1 + null      // 2, null is converted to 0
1 + undefined // NaN, undefined is converted to NaN