22

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

7 Answers 7

52

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
Sign up to request clarification or add additional context in comments.

1 Comment

+x + +y is working fine. Thanks a lot to RightSaidFred and others. I got the idea of string and concatenation.
9

+ 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.

Comments

3

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

Comments

2

this works every time

((x*1) + (y*1))

Comments

1

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.

Comments

1

Unary plus should work:

var totalVal = (+2) + (+2);

alert(totalVal);
// result 4

Comments

0

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.

1 Comment

Why 1 + null = 1 + 0 = 2?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.