Инкремент и декремент в javascript

Выполняем такой код:

highFives = 0;
highFives++;
0
highFives++;
1
highFives;
2

Почему мы получаем 2 в конце а не 1?По идее мы получили 1 и не изменяя выводим его... Разъясните пожалуйста, я не понимаю!!!


Ответы (1 шт):

Автор решения: Алексей Шиманский

Потому что пост инекремент - это когда переменная вначале отдаёт своё значение, а потом его увеличивает (упрощённо для понимания. На самом деле алгоритм чуть другой). Т.к. Тут два раза идёт постинкремент, то минимум два раза переменная увеличит своё значение. После второго highFives++; оно уже примет такое значение.


Краткий алгоритм оператора:

operator++(int) {
    int temp = myValue;
    myValue = myValue + 1;
    return temp;
}

соответственно будет в итоге:

highFives = 0;
int temp = highFives;
highFives = highFives + 1; // highFives становится 1
return temp;  // но отдало значение 0
int temp2 = highFives;
highFives = highFives + 1; // highFives становится 2
return temp2;  // но отдало значение 1
→ Ссылка