counter++;
имеет оператор ++ в позиции постфикса, который говорит ему сначала возвращать значение счетчика, а затем увеличивать после. Итак, в вашем первом примере вот что происходит: возвращается 0, а затем увеличивается до 1; затем возвращается 1, затем увеличивается до 2 и т. д.
Во втором примере counter++
по-прежнему возвращает первый и увеличивает после, но ничто не заботится о возвращаемом значении операции приращения, поскольку слева от этой строки кода нет левой части. Затем более поздняя строка вернет теперь увеличенное значение.
Также возможно использовать ++ в префиксной позиции, в этом случае он будет сначала увеличиваться, а затем возвращаться. Вы можете использовать это, чтобы изменить ваш первый пример для вывода 1, 2, 3.
const counter = (function() {
let count = 0;
return function() {
return ++count; //<--- changed to prefix
}
}());
console.log(counter()); // output: 1
console.log(counter()); // output: 2
console.log(counter()); // output: 3