Замыкания в JavaScript
Давайте теперь изучим понятие замыкание (англ. closure). На самом деле вы уже знакомы с этим понятием, осталось только узнать правильную терминологию.
Итак, замыкание - это функция вместе со всеми внешними переменными, которые ей доступны. Или, другими словами, замыкание - это функция вместе со своим лексическим окружением.
В JavaScript чаще всего, говоря "замыкание функции", имеют ввиду не саму эту функцию, а именно ее внешние переменные. Если же какая-то функция получает переменную из своего лексического окружения, то говорят "переменная берется из замыкания".
Вспомним код, который мы сделали в предыдущем уроке:
function test() {
let num = 1;
return function() {
console.log(num);
}
}
let func = test();
func(); // выведет 1
В данном случае и можно сказать, что функция
func
получает значение переменной
num
из замыкания. Также можно сказать,
что функция func
хранит значение переменной
num
в замыкании.