Инкремент и декремент в 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