Чтобы понять замыкания, мы должны быть знакомы с областями видимости в 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