Замыкания JavaScript — это особенность языка, которая позволяет внутренним функциям иметь доступ к переменным и параметрам, определенным в области действия их родительской функции, даже после того, как родительская функция завершила выполнение. Это достигается созданием замыкания, которое является внутренней функцией, имеющей доступ к переменным в области видимости внешней функции.
Когда функция определена внутри другой функции, внутренняя функция имеет доступ к переменным, определенным в области действия внешней функции, и эти переменные не удаляются сборщиком мусора, когда внешняя функция завершает выполнение. Вместо этого они сохраняются и могут быть доступны внутренней функции при ее вызове.
Вот пример закрытия JavaScript:
function outerFunction(x) { var innerVar = "I am an inner variable"; function innerFunction() { console.log(x + " and " + innerVar); } return innerFunction; } var closure = outerFunction(10); closure(); // Output: 10 and I am an inner variable
В приведенном выше примере, когда мы вызываем outerFunction(10)
, возвращается внутренняя функция innerFunction()
, эта внутренняя функция имеет доступ к переменной innerVar
и параметру x
, даже если внешняя функция завершила свое выполнение. Мы можем использовать возвращенную функцию closure
для доступа к переменной и параметру.
Замыкания полезны для создания закрытых переменных и методов, доступ к которым может получить только внутренняя функция и которые скрыты от внешней области видимости. Они также позволяют создавать фабрики функций, где функция возвращает новую функцию с другим поведением на основе переданных ей аргументов.