Любая функция, которая использует переменную за пределами своего функционального блока в пределах своей лексической области видимости, является примером замыкания.
Теоретически любая внутренняя функция в JavaScript может получить доступ к переменным, определенным во внешней функции, с помощью замыканий.
В JavaScript замыкания создаются каждый раз при создании функции.
Приведенный выше код является примером простейшего замыкания. Это дает следующий вывод,
foo
В JavaScript все находится в глобальной области видимости. Здесь наша функция определена в глобальной области видимости, которая является внешней областью действия для bar
, поэтому она имеет доступ ко всем глобальным переменным.
В большинстве случаев, когда мы говорим о замыканиях, мы обычно имеем в виду сценарий вложенных функций. Давайте посмотрим,
Приведенный выше код является классическим и хорошо известным примером замыканий, он дает следующий вывод:
outerVariable
Обратите внимание, как мы можем получить доступ к outerVariable
из innerFunction
, поскольку он имеет доступ к своей лексической области видимости, т. е. область, в которой находится, была объявлена.
Замыкания обычно используются для обеспечения конфиденциальности данных внутри функционального блока и передачи общих свойств нескольким функциям в пределах лексической области.
Для более подробного описания перейдите по ссылке: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures.
— На сегодня все