Я думаю, что это базовый вопрос JS, но я просто не смог найти ответ, который меня удовлетворил бы. Я изучаю операторы в JavaScript, и я не могу понять этот следующий пример постфикса и то, как он работает:
var x = 4;
var y = x++;
Например, когда я предупреждаю x, он дает мне 5. Но когда я предупреждаю y, он дает мне 4. И я не могу понять логику этого. Я понимаю, что, поскольку это постфикс, x присваивается y. А y читает только x без постфикса. Но почему тогда исходный x вместо этого читает постфикс, если я применяю его к другому var?
Если бы я просто сделал var y = x + 1, исходный x остался бы без изменений. Но это не тот случай, когда я использую postfix. Зачем мне вообще менять x этим методом? Могу я просто пойти тогда var x = 4; x++;? И не заморачиваться через другой вар?
Прошу прощения, если это слишком просто, и заранее спасибо!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Why would I even change the x with this method?
Для забавных сокращений вроде:
const array = [1, 2, 3];
let i = 0;
while(i < array.length) console.info(array[ i++ ]);
Couldn't I just go then var x = 4; x++; ?
Да, или просто префикс, например ++x или просто x += 1, что в большинстве случаев более уместно.
Легче представить операторы приращения как небольшие функции, которые что-то возвращают. Итак, x++ - это функция, которая увеличивает x и возвращает исходное значение x, тогда как ++x делает то же самое, но возвращает новое значение.
Время от времени это бывает полезно, особенно в петлях, где требуется точный контроль точки остановки. Например, сравните:
let i = 0, j = 0;
while (++i < 5) {
console.info(i) // stops at 4
}
while (j++ < 5) {
console.info(j) // stops at 5
}Разница в том, что цикл while вычисляет одно перед приращением, а другое - после.
Точно так же в рекурсивных функциях вы часто увидите такие вещи, как:
function recurse(i) {
if (i == 5) return i
console.info(i)
return recurse(++i)
}
console.info("final: ", recurse(0))Но если вы используете постфикс return recurse(i++), вы получите бесконечную рекурсию.