Ищете закрытие при закрытии? Я знаю это чувство. Мне пришлось прочитать кучу различных объяснений этой концепции, прежде чем я почувствовал, что наконец понял, что конкретно означает термин «закрытие».

Что такое закрытие?

Вот мое упрощенное понимание:

Замыкание - это вложенная функция (функция, которая определяется внутри родительской функции), которая имеет две ключевые особенности:

  1. Замыкание сохраняется как переменная своей родительской функции
  2. Замыкание может получить доступ ко всем переменным внутри этой родительской функции

В определениях закрытия обычно используется слово область действия. Область действия определяет и ограничивает доступ к переменным в зависимости от того, где эти переменные существуют в вашем коде.

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

Пример:

Когда мне следует использовать укупорку?

Когда вам нужно сохранить определенные переменные закрытыми (доступными только для родительской функции и любых функций внутри нее) и контролировать использование этих переменных.

Есть и более сложные варианты использования, но я сам еще не изучал их :)