Чтобы понять, что такое замыкание, рассмотрим пример: function person() {let name = 'Peter';
return function displayName() { console.log(name);
};
}
let peter = person();
peter(); // 'Peter' Вызов функции peter() возвращает функцию displayName(). В свою очередь, функция displayName() имеет доступ к переменной name, которая расположена во внешней по отношению к ней функции. Таким образом, функция displayName() является замыканием. Итак, замыкание — это функция, которая запоминает и имеет доступ к лексическому окружению, в котором она была создана (контекст выполнения). Контекст выполнения — это место функции среди соседей и родителя. Код функции выполняется внутри контекста выполнения функции. Пример: Здесь создается переменная, находящаяся в глобальном контексте и функция, создающая свой контекст. Лексическое окружение — это хранилище для данных в памяти и механизм для извлечения этих данных при обращении: Эти два понятия: лексическое окружение и контекст выполнения основные для поним