Как понять момент в замыкании(JS)?
Переписал код, надеюсь, более понятно стало:function makeCounter(){
    //Эта переменная видна только здесь
    var currentCount = 0;
    
    //Эта функция - тоже только здесь, зато она видит currentCount
    function getCountValue(){
        currentCount += 1;
        return currentCount;
    }
    
    //Возвращаем саму функцию, а не её значение
    return getCountValue;
}

//counter = getCountValue
var counter = makeCounter();

counter(); //На самом деле - вызов getCountValue()
В примере сначала идет присвоение переменной функции makeCounter (об этом даже название функции говорит), которая в свою очередь возвращает другую функцию, в результате переменная counter = function() {
  currentCount++;
  return currentCount;
}; Которую мы потом вызываем