+ 2

Why is the output of this 7 and 7?

Shouldn't this increment in the first console log before displaying? I understand the second console log. https://code.sololearn.com/W9z0vpU16181/?ref=app

28th Feb 2019, 6:42 AM
Mario
Mario - avatar
4 Answers
+ 6
If you want to increment sum, use either sum++ or ++sum, not sum = ++sum. I don't think that there's something like undefined behavior in JavaScript, but in other languages an expression like x = x++ would be wrong and lead to undefined/unpredictable results. Even if that's not the case in JS, I'd say it's not good programming style because you use the increment operators in a way they were not intended to
28th Feb 2019, 7:52 AM
Anna
Anna - avatar
+ 5
Anna Though i agree with you, i think than the code is only for make thinking about the operator in not-usual case... Like a challenge. I dont think than a similar code is useful for others reasons
28th Feb 2019, 7:59 AM
KrOW
KrOW - avatar
+ 4
var sum=5 sum= sum++ What will be sum at this point? 6? Wrong. It will be equals to 5. This because sum++ return the value of sum BEFORE than its been incremented and, though incrementation happen, it happen before than "returned" value is assigned to sum (with assignement operator) making increments really ineffective. Now : sum = ++sum; Here ++sum will return the value AFTER the increment and sum will be 6 console.log(++sum); At this point, sum==6 and for same motivations than you seen before, 7 will be printed abd sum will be console.log(sum++); Here will be printed 7 just because what i said before, but note than after this line sum is 8
28th Feb 2019, 7:18 AM
KrOW
KrOW - avatar
+ 3
EveryThingIsEasy() yes but you missed the increment operations within console.log(). Also KrOW is saying that the increment has no effect in sum=sum++; This was new to me. It's as if two variables are used behind the scenes here and not a single one called sum.
28th Feb 2019, 12:50 PM
Sonic
Sonic - avatar