Ищете закрытие при закрытии? Я знаю это чувство. Мне пришлось прочитать кучу различных объяснений этой концепции, прежде чем я почувствовал, что наконец понял, что конкретно означает термин «закрытие».
Что такое закрытие?
Вот мое упрощенное понимание:
Замыкание - это вложенная функция (функция, которая определяется внутри родительской функции), которая имеет две ключевые особенности:
- Замыкание сохраняется как переменная своей родительской функции
- Замыкание может получить доступ ко всем переменным внутри этой родительской функции
В определениях закрытия обычно используется слово область действия. Область действия определяет и ограничивает доступ к переменным в зависимости от того, где эти переменные существуют в вашем коде.
Все, что вам нужно знать, это то, что замыкание имеет доступ к локальной области видимости своей родительской функции, поэтому оно может получить доступ ко всем переменным в своей родительской функции.
Пример:
Когда мне следует использовать укупорку?
Когда вам нужно сохранить определенные переменные закрытыми (доступными только для родительской функции и любых функций внутри нее) и контролировать использование этих переменных.
Есть и более сложные варианты использования, но я сам еще не изучал их :)