我有一个如下的代码:
var point = '';
point = '' + 12 + 34;
console.log(point); // output = 1234
var point = '';
point += + 12 + 34;
console.log(point); //output = 46
你能解释一下吗?
谢谢。
我有一个如下的代码:
var point = '';
point = '' + 12 + 34;
console.log(point); // output = 1234
var point = '';
point += + 12 + 34;
console.log(point); //output = 46
你能解释一下吗?
谢谢。
point += + 12 + 34;
相当于:
// v-----------v---- note grouping
point = point + ( + 12 + 34 );
// ^--- unary
+
是一元的+
,在这里并没有起到任何作用,因为12
已经是一个数字。所以我们有:point = point + ( 12 + 34 );
翻译内容如下:
point = point + 46;
由于 point
初始值为 ""
,因此结果为 "46"
(字符串类型)。
根据加法赋值运算符,使用该运算符与指定表达式result = result + expression
完全相同。
你的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"
。'' + 12 --> '12'
(请注意,现在我们拥有一个字符串,而不是一个数字)'12' + 34 --> '1234'
Javascript自动将数字34强制转换为字符串'34'
以便求值表达式+12 --> 12
应用于数字12
的一元运算符,什么也没发生12 + 34 --> 46
相当标准的总和'' + 46 --> '46'
空字符串加上数字46
,结果为字符串'46'
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"
+
)。这就是生活。 - Álvaro González