Показать сообщение отдельно
  #2 (permalink)  
Старый 10.11.2018, 02:51
Интересующийся
Отправить личное сообщение для Auroar Посмотреть профиль Найти все сообщения от Auroar
 
Регистрация: 10.04.2018
Сообщений: 10

Нашел ответ на свой вопрос, и он просто шикарен!!!

В JavaScript под замыканием понимается внутренняя функция, которая будет возвращена в результате выполнения родительской функции. Но в замыкании интересно не это, а то, что внутренняя функция имеет доступ к переменным родительской функции, даже если она завершила своё выполнение.

Почему так происходит? В JavaScript для очистки памяти используется автоматический сборщик мусора. Т.е. после того как функция отработала, все внутренние переменные, которые были созданы в момент её выполнения автоматически уничтожаются сборщиком мусора и получить доступ к ним уже нельзя. А что если внутри некоторой функции поместить ещё одну функцию и вернуть её в качестве результата. В этом случае случится замыкание, т.к. в JavaScript любая функция имеет ссылку на родительский объект (в данном случае на переменные родительской функции). А пока существует ссылка, сборщик мусора не может уничтожить переменные родительской функции и к ним можно обратиться. Такой приём в JavaScript позволяет внутренней функции сохранять окружение, в котором она создана.
Ответить с цитированием