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