Can anyone tell me why and how the expression 1+ +"2"+3 in JavaScript results in 6 and that too is a number? I don't understand how introducing a single space in between the two + operators converts the string to a number.
4 Answers
Using +"2" casts the string value ("2") to a number, therefore the exrpession evaluates to 6 because it essentially evaluates to 1 + (+"2") + 3 which in turn evaluates to 1 + 2 + 3.
console.log(1 + +"2" + 3); console.log(typeof "2"); console.log(typeof(+"2")); If you do not space the two + symbols apart, they are parsed as the ++ (increment value) operator.
Comments
It's simple first it convert the string +"2" to number(According to the operator precedence) and then add all these.
For Operator precedence mozilla developer link
Comments
+"2" is a way to cast the string "2" to the number 2. The remain is a simple addition.
The space between the two + operators is needed to avoid the confusion with the (pre/post)-increment operator ++.
Note that the cast is done before the addition because the unary operator + has a priority greater than the addition operator. See this table: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table
5, i got6! Btw, that+will evaluate the string toNumber.