var a = "ab";
var b = "ab";
a+=1; // "ab1"
b++; // "NaN"
(Tested on chrome's V8)
Can someone explain why the results are different based on the internal atomic actions of the ++
arithmetic operator and the +=
assignment operator with argument 1
There is no difference between the numbers 01 and 1 . They are absolutely identical.
++ increases the integer by one and += increases the integer by the number of your choice.
No, -1, 0, and 1 in a comparison function are used to tell the caller how the first value should be sorted in relation to the second one. -1 means the first goes before the second, 1 means it goes after, and 0 means they're equivalent.
These two are exactly the same. It's just two different ways of writing the same thing. i++ is just a shortcut for i += 1 , which itself is a shortcut for i = i + 1 . These all do the same thing, and it's just a question of how explicit you want to be.
++
converts to number, and then increments, +=
with a String concatenates.
From the spec:
11.3.1 Postfix Increment Operator
...
3. LetoldValue
beToNumber(GetValue(lhs))
.
4. LetnewValue
be the result of adding the value 1 tooldValue
, using the same rules as for the+
operator (see 11.6.3).
For the a+=1
case, if you add a number to a string or the other way around the number gets converted to a string:
11.6.1 The Addition operator ( + )
...
7. IfType(lprim)
is String orType(rprim)
is String, then
a. Return the String that is the result of concatenating ToString(lprim) followed by ToString(rprim)8. Return the result of applying the addition operation to ToNumber(lprim) and ToNumber(rprim).
++
tries to increment a Number (if it's not a number, this will fail - resulting in NaN
)+=
is concatenation, in this case the JavaScript engine figures out that one side is a string, so they're both concatenated as strings.They're different because they're different operations, ++
is specifically an arithmetic operator, where as +=
is a more general assignment operator that behaves differently based on the data type - specifically, string has its own implementation.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With