Странный вопрос, ну ладно.
1) Тут ошибка
counter(); // counter не функция
Почему? Да потому, что в переменную counter записан результат работы функции, а не ссылка на нее.
2) В целом код работает, т.е, если исправить строку с ошибкой, допустим на
// counter();
alert(counter); // 1
то получим результат функции, т.е 1.
3) Почему всегда 1?
var currentCount = 1;
Ну, потому что при вызове функции внутри неё объявляется новая переменная
currentCount. которая равна 1.
4) Но стоп, почему 1?? Ведь я...
return currentCount++
увеличил значение на 1.
Нет, не увеличил, ты сначала вернул результат, а потом ее увеличил, но этого ты никогда не увидишь, ибо функция уже вернула результат, следственно - отработала свое.
подробнее тут:
https://learn.javascript.ru/operator...%D0%BD%D 1%82