JavaScript concating with number as string -


why x = "1"- -"1" work , set value of x 2?

why doesn't x = "1"--"1" works?

enter image description here

this expression...

"1"- -"1" 

... processed ...

"1"- (-"1") 

... is, substract result of unary minus operation applied "1" "1". now, both unary , binary minus operations make sense applied numbers - js converts operands numbers first. that'll becomes:

number("1") - (-(number("1")) 

... that'll becomes evaluated 2, number("1"), expect, evaluates 1.


when trying understand "1"--"1" expression, js parser attempts consume many characters possible. that's why expression "1"-- processed first.

but makes no sense, auto-increment/decrement operations not defined literals. both ++ , -- (both in postfix , prefix forms) should change value of assignable ('left-value') expression - variable name, object property etc.

in case, however, there's nothing change: "1" literal always "1". )


actually, got bit different errors (for x = "1"--"1") both in firefox:

syntaxerror: invalid decrement operand 

... , chrome canary:

referenceerror: invalid left-hand side expression in postfix operation 

and think these messages show reason of error quite clearly. )


Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -