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