гуглю. 
                  
                  
                  Пример:
                  
                  
                  function makeCounter() {
                  
                  
                    var currentCount = 1;
                  
                  
                  
                  
                  
                    return function() {
                  
                  
                      return currentCount++;
                  
                  
                    };
                  
                  
                  }
                  
                  
                  
                  
                  
                  var counter = makeCounter()
                  
                  
                  Я правильно понял, что замыкание возникает тогда и только тогда, когда 1я функция возвращает 2ю функцию, и в это время 2я ф-я находит необходимую для себя переменную в лексическом контекте родительской функции(первой), и когда назнаешь ее переменной, превращая переменную в функцию, то вот тогда то 2я функция и пользуется тем что запомнила лексический контекст в котором была создана, потому и только потому, что этого контекста уже не существует? Т.е. существовал бы контекст родителя, в котором можно бы было найти переменную здесь и сейчас, никто ничего бы в себя не замыкал?
                  
                  
                
У функции есть scope который ссылается на уровень выше и lexical environment которое внутри функции, scope создаётся один раз, le каждый раз при запуске. Когда не находит переменную в le идёт по scope на уровень выше и тд, до глобального объекта window. Это все замыкание
Обсуждают сегодня