I read this question in some post on SO, so please explain this.
Thanking you.
I read this question in some post on SO, so please explain this.
Thanking you.
The +
operator is overloaded in JavaScript to perform concatenation and addition. The way JavaScript determines which operation to carry out is based on the operands. If one of the operands is not of class Number
(or the number
primitive type), then both will be casted to strings for concatenation.
3 + 3 = 6 3 + '3' = 33 '3' + 3 = 33 (new Object) + 3 = '[object Object]3'
The -
operator, however, is only for numbers and thus the operands will always be cast to numbers during the operation.
+
is the String concatenation operator so when you do '7' + 4
you're coercing 4
into a string and appending it. There is no such ambiguity with the -
operator.
If you want to be unambiguous use parseInt()
or parseFloat()
:
parseInt('7', 10) + 4
Why specify the radix to 10? So '077'
isn't parsed as octal.
Because + is for concentration, if you want to add two numbers you should parse them first parseInt() and - sign is for subtraction
The sign + in Javascript is interpreted as concatenation first then addition, due to the fact that the first part is a string ('7'). Thus the interpreter converts the 2nd part (4
) into string and concatenate it.
As for '7' - 4
, there is no other meaning other than subtraction, thus subtraction is done.
The '+' operator is defined for both strings and numbers, so when you apply it to a string and a number, the number will be converted so string, then the strings will be concatenated: '7' + 4 => '7' + '4' => '74' But '-' is only defined for numbers, not strings, so the string '7' will be converted to number: '7' - 4 => 7 - 4 => 3