Замыкания в JavaScript для начинающих
+Замыкания — это одна из фундаментальных концепций JavaScript, вызывающая сложности у многих + новичков, знать и + понимать которую должен каждый JS-программист. Хорошо разобравшись с замыканиями, вы сможете писать более + качественный, эффективный и чистый код. А это, в свою очередь, будет способствовать вашему профессиональному + росту.
+Материал, перевод которого мы публикуем сегодня, посвящён рассказу о внутренних механизмах + замыканий и о том, + как + они работают в JavaScript-программах. +
+Что такое замыкание?
+Замыкание — это функция, у которой есть доступ к области видимости, сформированной внешней + по отношению к ней + функции даже после того, как эта внешняя функция завершила работу. Это значит, что в замыкании могут храниться + переменные, объявленные во внешней функции и переданные ей аргументы. Прежде чем мы перейдём, собственно, к + замыканиям, разберёмся с понятием «лексическое окружение». +
+Что такое лексическое окружение?
+Понятие «лексическое окружение» или «статическое окружение» в JavaScript относится к + возможности доступа к + переменным, функциям и объектам на основе их физического расположения в исходном коде. Рассмотрим пример: +
+
+ Здесь у функции inner() есть доступ к переменным, объявленным в её собственной
+ области
+ видимости, в области
+ видимости функции outer() и в глобальной области видимости. Функция outer() имеет
+ доступ к переменным,
+ объявленным в её собственной области видимости и в глобальной области видимости.
+
Цепочка областей видимости вышеприведённого кода будет выглядеть так: +
+
+ Обратите внимание на то, что функция inner()окружена лексическим окружением
+ функциb outer(), которая, в свою
+ очередь, окружена глобальной областью видимости. Именно поэтому функция inner() может получить
+ доступ к
+ переменным, объявленным в функции outer() и в глобальной области видимости.
+
+