Постфиксный инкремент, не понимаю как работает
Вопрос для вас может банальный но я уже час ни как понять не могу.
let counter = 0;
console.log(counter++ + counter++); // 1
console.log(counter++ + counter++); // 5
Откуда взялся 1 во второй строке если постфиксный инкремент возвращает старое число (тот же 0). И потом еще в третьей строке как alert вышел больше реального числа если должно быть наоборот ?!
Ответы (2 шт):
Автор решения: Igor
→ Ссылка
let counter = 0;
console.log( counter++ + counter++ ); // 1
console.log( counter++ + counter++ ); // 5
let counter = 0;
// вычисление первого операнда:
__temp1 = counter; // 0
counter = counter + 1; // 1
// вычисление второго операнда:
__temp2 = counter; // 1
counter = counter + 1; // 2
console.log( __temp1 + __temp2 ); // 1
Автор решения: CrazyElf
→ Ссылка
let counter = 0;
alert( counter++ + counter++ ); // 1
^^ 0 ^^ + ^^ 1 ^^ => 0 + 1 = 1
alert( counter++ + counter++ ); // 5
^^ 2 ^^ + ^^ 3 ^^ => 2 + 3 = 5
Когда мы встречаем counter++ в первый раз вместо него в выражение подставляется 0, но в следующем месте, когда он встречается подставляется уже 1, и т.д.