Замыкание — очень важная тема в JavaScript. В этом блоге мы пытаемся очень глубоко понять закрытие. Теперь, что такое закрытие?
Замыкание дает вам доступ к области действия внешней функции из внутренней функции.
Это определение будет иметь смысл, когда мы попытаемся понять это на примере.
Здесь должно быть напечатано 10. Сначала JavaScript находит const a
во внутренней функции, а затем const a
в лексической области видимости. Внутренняя функция может обращаться к переменной внешней функции. Простыми словами, это закрытие. Но мы въедем вглубь закрытия.
Мы понимаем, что внутренняя функция может обращаться к переменным внешней функции. Но как насчет внешней функции? Может ли внешняя функция получить доступ к переменным внутренней функции? Давайте разберемся.
Получаем ошибку. Это b is not defined
.
Это означает, что внешняя функция не может получить доступ к переменным внутренней функции при закрытии.
В завершение внутренняя функция также может получить доступ к большинству внешних и внешних функций. При этом с примером.
Давайте разберемся с закрытием на других примерах. Что, если мы попытаемся объявить ту же переменную во внутренней функции? Какое значение следует напечатать?
Здесь должно быть напечатано 11. var a
сначала находит во внутренней функции, когда не обнаруживает. Затем перейдите к внешней функции, чтобы узнать файл var a
.
Давайте попробуем понять, что происходит в следующем коде.
Что печатать, 10 или 11? Ответ: 11. В исполнительной части javascript значение не сохраняется. Он сохраняет ссылку на переменную, и внутренняя функция всегда указывает на эту ссылку.
Надеюсь, вы все понимаете концепцию закрытия. Удачного кодирования 👨💻
Первоначально опубликовано на https://sahedthought.hashnode.dev.