Объясните пожалуйста, почему данный код выводит число 13?
var i = 5;
i = ++i + ++i;
console.log(i); // 13
Объясните пожалуйста, почему данный код выводит число 13?
var i = 5;
i = ++i + ++i;
console.log(i); // 13
++i - это преинкремент. Он вычисляется перед использованием переменной.
Т.е, вычислилось первое ++i, в i теперь 6, выражение теперь 6 + (++6). Потом вычислили второе ++i, в i теперь 7. Потом сложили 6 + 7, получили 13.
С другой стороны, к примеру, если взять постинкремент i++.
После i = i++ + i++; в i будет 11, т.к. постинкремент вычисляется после использования переменной.
Т.е, подставилось в выражение, вычислилось первое i++, в i теперь 6, получили выражение 5 + (6++). Потом второе i++, в i было 6, оно и подставилось, стало 5 + 6, после чего i стало равно 7. Cложили 5 + 6, получили 11.
++i (в тех же циклах), и редко в комплексных выражениях. Поэтому, даже матёрые разработчики на этом моменте могут залипнуть )
– Suvitruf - Andrei Apanasik
Aug 19 '18 at 12:07