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