Выражение count++
оценивает count
, добавляет 1, сохраняет результат в count
, но общий результат (чистое значение count++
) равен оригинальному значению count
.
Выражение count + 1
оценивает count
, добавляет 1 и возвращает результат. Значение count
не изменяется.
Интересно, что можно подражать ++count
(предварительное увеличение) альтернативным выражением
var inc = (count += 1);
действительно нет никакого способа (я могу придумать) подражать count++
чисто без использования функции, потому что нет необходимости обойтись во временном хранилище:
var inc = () => { let tmp = count; count += 1; return tmp }();
Семантика оператора постинкремента ++
датируется C в 1970-х и, вероятно, ранее, и была скопирована многими другими языками, включая JavaScript. Фольклор (насколько я помню, будучи пожилым человеком) считал, что операторы до и после приращения были вдохновлены режимами адресации, доступными в наборе команд DEC PDP-11, но это всегда казалось мне маловероятным.