Чтобы понять замыкания, мы должны быть знакомы с областями видимости в JavaScript.
Область действия — довольно простая тема, которая означает видимость переменной в других частях программы. Область видимости означает доступ к переменным. К какой переменной у меня есть доступ во время выполнения кода? В JavaScript областью по умолчанию является корневая область, которая относится к области окна. Помимо области окна есть еще 2 области.
Представьте объем в виде коробки. Когда мы смотрим на коробку, есть две области.
1. Область внутри коробки.
2. Область вне коробки.
Локальная область
Локальная область похожа на область внутри коробки, и мы можем получить доступ только к вещам или переменным только в этой коробке. Содержимое коробки недоступно снаружи.
ПРИМЕР :
Вышеуказанная программа выдаст ошибку
ReferenceError: localVariable is not defined
потому что здесь localScopeDemoFunction
— это коробка, а localVariable
— предмет внутри этой коробки. Доступ в таком виде невозможен.
ГЛОБАЛЬНЫЙ МАСШТАБ
Можно представить, что область вне коробки и область внутри коробки могут получить доступ к переменным или вещам извне коробки. Позвольте мне пояснить это на примере:
ПРИМЕР :
Здесь мы получим вывод hi
, потому что к globalVariable можно получить доступ внутри функции, потому что она объявлена в глобальной области видимости.
ЗАКРЫТИЕ
Представьте себе две функции (одна функция внутри другой функции). В JavaScript мы можем определить функцию внутри функции, нет необходимости объявлять ее в глобальной области видимости. Давайте посмотрим на это на примере.
ПРИМЕР :
Здесь, в приведенном выше примере, мы объявили функцию outerFunction
, которая заключает в себе внутреннюю функцию. Когда мы вызываем внешнюю функцию, она возвращает innerFunction
(да, в javascript мы можем вернуть внутреннюю функцию, поскольку функции являются членами первого класса, как и другие переменные. В вышеупомянутой демонстрации мы затем вызываем внутреннюю функцию, и она просто напечатает hi
для консоль.
Есть два способа использования этой внутренней функции, и мы показали это выше. В первом случае мы вызываем возвращаемое значение напрямую, как если бы вызов функции outerFunction
сам был функцией.
Во втором методе мы сохраняем возвращаемое значение outerFunction
в переменной, а затем вызываем ее.
Итак, в приведенном выше примере мы увидели, что такое внутренние функции и как они выглядят в реальном мире.
Прежде чем определить концепцию замыкания, давайте снова воспользуемся блочной моделью, которую мы использовали в области видимости для упрощения.
Замыкания — это свойство javascript, которое позволяет внутренней функции использовать переменные внешней функции. Это также ограничивает доступ внешних функций к переменным внутренних функций.
Таким образом, в соответствии с блочной моделью внутренняя часть коробки может получить доступ к внешним свойствам, а внешняя область просто не может получить доступ к внутренним свойствам.
ПРИМЕР :
Здесь, когда мы вызываем innerFunction
, мы получаем Hello
на консоли, что означает, что наша внутренняя функция смогла получить доступ к свойству внешней функции. Это просто закрытие.
Здесь, в этом посте, мы узнали о области действия (глобальная область действия и локальная область действия), а также узнали о замыканиях в javascript.
Если вы что-то поняли из того, что я здесь сказал, пожалуйста, похлопайте в ответ и подпишитесь на меня, потому что это помогает мне сохранять мотивацию и выделять время в моем расписании для написания этих статей. Вам это ничего не будет стоить, а мне очень поможет
Гаурав Шарма — заядлый читатель и страстный путешественник. Он пытается жить более значимой и целеустремленной жизнью, распространяя свои знания и свой жизненный опыт! Следуйте за ним в этом новом путешествии по балансированию цифровой и физической жизни. Он живет в Уттаракханде, Индия. Он есть в Instagram по адресу @golf._.sierra