I am trying to learn Javascript. Here I am confused with the following code.
http://rendera.heroku.com/usercode/eae2b0f40cf503b36ee346f5c511b0e29fc82f9e
When I put x+y
in the function it is going wrong. For example 2+2=22
, 5+7=57
But /
, *
, -
are working. Why is +
not working? Please help me. Thanks a lot in advance
One or both of the variables is a string instead of a number. This makes the +
do string concatenation.
'2' + 2 === '22'; // true
2 + 2 === 4; // true
The other arithmetic operators / * -
will perform a toNumber
conversion on the string(s).
'3' * '5' === 15; // true
A quick way to convert a string to a number is to use the unary +
operator.
+'2' + 2 === 4; // true
...or with your variables:
+x + +y
+
has two uses. One is addition, the other however is string concatenation. If one or both of your variables is a string, then +
will concatenate them.
You will need to use parseInt
or parseFloat
to turn a string into a number.
In Javascript the + operator can either perform addition or concatenation depending on the type of its operands. When numbers are used with + it uses addition, but when strings are used with + it concatenates (joins the strings) instead
If the numbers that you are trying to add are 10 and 12, if they resulting sum is supposed to be 22, then you should probably do it as
+10 + +12
And the result might be a string like 1012 if one or both of the numbers is a string.
Unary plus should work:
var totalVal = (+2) + (+2);
alert(totalVal);
// result 4
The addition operator works the following way:
1) If at least one operand is a string, then another is converted to string and concatenation is performed;
1 + "2" // "12"
"2" + "3" // "23"
"2" + null // "2null", null is converted to "null"
2) In other cases both operands are converted to numbers:
1 + null // 2, null is converted to 0
1 + undefined // NaN, undefined is converted to NaN
Check the post JavaScript's addition operator demystified for more details.