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