Почему данный код выводит число 13?

157
09 ноября 2018, 11:10

Объясните пожалуйста, почему данный код выводит число 13?

var i = 5;
i = ++i + ++i;
console.log(i); // 13
Answer 1

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

Answer 2

Все верно. Сначала выполняется "первый" i++, потом "второй". Лишь потом складывается.

READ ALSO
Как правильно оформлять библиотеки?

Как правильно оформлять библиотеки?

Я оформил свою библиотеку так:

163
Прибавление интервалов времени JavaScript

Прибавление интервалов времени JavaScript

Новичок в  jsВозник ступор в процессе решения задачи

194
Не удается установить MySQL на Ubuntu

Не удается установить MySQL на Ubuntu

Пытаюсь настроить рабочее окружение Ubuntu на VirtualBoxСтолкнулся с проблемой установки MySql

189
Использование в MYSQL INSERT ON DUPLICATE KEY UPDATE c условием

Использование в MYSQL INSERT ON DUPLICATE KEY UPDATE c условием

Требуется чтобы при наличии дубликатов кол-во увеличивалось не на 1, а на то, что пришло в переменных в разделе VALUES(например productprod_count + 2)

222