我的代码如下:
var point = '';
point = '' + 12 + 34;
console.log(point); // output = 1234
var point = '';
point += + 12 + 34;
console.log(point); //output = 46
你能解释一下吗?
感谢。
答案 0 :(得分:9)
区别在于分组。这样:
point += + 12 + 34;
相当于:
// v-----------v---- note grouping
point = point + ( + 12 + 34 );
// ^--- unary
指示的+
是一元+
,由于12
已经是数字,因此不会执行任何操作。所以我们有:
point = point + ( 12 + 34 );
是:
point = point + 46;
,由于point
开始为""
,因此"46"
(字符串)。
答案 1 :(得分:4)
在第一种情况下,会发生这种情况:
'' + 12 --> '12'
(请注意,现在我们有一个字符串,而不是数字)'12' + 34 --> '1234'
Javascript会自动将数字34强制转换为字符串'34'
以评估表达式相反,这就是第二种情况:
+12 --> 12
一元运算符应用于数字12
,没有任何反应12 + 34 --> 46
相当标准的总和'' + 46 --> '46'
空字符串求和为46
,结果为字符串'46'
答案 2 :(得分:3)
每Addition Assignment Operator ...
使用此运算符与指定:
result = result + expression
完全相同。
您的表达式是+12 + 34
,其结果为46
整数。
point = point + expression
point = point + (+12 + 34)
point = point + 46
point = "" + 46
point = "46"
您可能会注意到,在最后一步中,""
与46
相结合,为我们提供了字符串 "46"
。再次,按照上述文件...
两个表达式的类型决定了+ =运算符的行为:
If Then
--- ---
Both expressions are numeric or Boolean Add
Both expressions are strings Concatenate
One expression is numeric and the other is a string Concatenate
这将是第三种情况的一个例子。一个表达式是数字(46
),另一个是字符串(""
),因此这两个值连接到"46"
。
答案 3 :(得分:1)
The addition assignment operator `(+=)` adds a value to a variable.
`x += y` means `x = x + y`
The `+=` assignment operator can also be used to add (concatenate) strings:
Example:
txt1 = "What a very ";
txt1 += "nice day";
The result of txt1 will be:
What a very nice day
On the other hand adding empty String `''` will make javascript to
confuse Addition & Concatenation.
Addition is about adding numbers.
Concatenation is about adding strings.
var x = 10 + 5; // the result in x is 15
var x = 10 + "5"; // the result in x is "105"