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