Замыкание — очень важная тема в JavaScript. В этом блоге мы пытаемся очень глубоко понять закрытие. Теперь, что такое закрытие?

Замыкание дает вам доступ к области действия внешней функции из внутренней функции.

Это определение будет иметь смысл, когда мы попытаемся понять это на примере.

Здесь должно быть напечатано 10. Сначала JavaScript находит const a во внутренней функции, а затем const a в лексической области видимости. Внутренняя функция может обращаться к переменной внешней функции. Простыми словами, это закрытие. Но мы въедем вглубь закрытия.

Мы понимаем, что внутренняя функция может обращаться к переменным внешней функции. Но как насчет внешней функции? Может ли внешняя функция получить доступ к переменным внутренней функции? Давайте разберемся.

Получаем ошибку. Это b is not defined.

Это означает, что внешняя функция не может получить доступ к переменным внутренней функции при закрытии.

В завершение внутренняя функция также может получить доступ к большинству внешних и внешних функций. При этом с примером.

Давайте разберемся с закрытием на других примерах. Что, если мы попытаемся объявить ту же переменную во внутренней функции? Какое значение следует напечатать?

Здесь должно быть напечатано 11. var a сначала находит во внутренней функции, когда не обнаруживает. Затем перейдите к внешней функции, чтобы узнать файл var a.

Давайте попробуем понять, что происходит в следующем коде.

Что печатать, 10 или 11? Ответ: 11. В исполнительной части javascript значение не сохраняется. Он сохраняет ссылку на переменную, и внутренняя функция всегда указывает на эту ссылку.

Надеюсь, вы все понимаете концепцию закрытия. Удачного кодирования 👨‍💻

Первоначально опубликовано на https://sahedthought.hashnode.dev.