Закрытие было для меня действительно пугающей темой. К счастью, я нашел видео от Namste Javascript [(https://www.youtube.com/watch?v=qikxEIxsXco)]о концепции замыкания и, кажется, понял замыкание.
Сначала давайте рассмотрим следующий блок кода
`
function outer () {
let a = 5;
function inner (){
console.log(«From Inner»,a)
}
return inner;
}
const myFunc = outer();
`
Здесь внешняя функция возвращает внутреннюю функцию. Мы присваиваем возвращаемый результат внешней функции переменной myFunc. До этого момента нет ничего нового.
Однако что произойдет, когда мы присвоим возвращаемый результат внешней функции. Если мы console.log myFunc, то увидим следующий результат.
Но если мы вызовем myFunc(), то получим результат 5. Как такое возможно?
Вопрос в том, как внутренняя функция получает значение a, которое объявлено в ее родительской области видимости?
Ответ: когда внутренняя функция возвращается, то возвращается не только функция, но и переменная. Это называется закрытием.
Представьте себе это следующим образом,
Таким образом, закрытие — это как конверт/коробка, которая содержит функцию и переменные, необходимые для функции.
Проще говоря, закрытие — это функция и лексическая область видимости, объединенные вместе.
Надеюсь, вы поняли концепцию закрытия.
Спасибо, что прочитали. Чтобы вдохновить меня, пожалуйста, напишите свой отзыв в разделе комментариев.