Замыкание — это функция, которая обращается к переменным «вне себя», в области действия другой функции, даже после закрытия родительской функции. Замыкание может сделать это благодаря сохраненной ссылке на лексическое окружение, в котором оно было изначально определено. Таким образом, замыкание дает нашим функциям постоянную память.
Давайте посмотрим на пример.
В приведенном выше примере мы сохраняем результат внешней функции в нашу переменную myFunc. Когда мы это делаем, сохраняется не только внутренняя функция incrementCounter, но и переменная counter. Этот пучок функции вместе с переменной и есть то, что называется замыканием. Это связано с сохраненной ссылкой на лексическое окружение.
Итак, если приведенная выше комбинация в совокупности является замыканием, что именно является счетчиком и как мы должны его называть? В основном это сохраненные данные, которые передаются с внутренней функцией для сохранения в глобальной памяти. Некоторые называют это "постоянными справочными данными с лексической областью действия".
Мы также можем сказать, что переменная counter «закрыта» внутренней функцией incrementCounter.
Эффективны ли замыкания для памяти? Да. Используя замыкания, мы можем создавать переменные, которые хранятся в памяти для использования в будущем.
Ниже приведены еще несколько примеров, которые могут появиться в интервью.
Каков будет результат следующего?
1 и 1. Каждый раз, когда мы вызываем внешнюю функцию, мы резервируем некоторое пространство в локальной памяти, которое будет содержать все переменные и аргументы. Когда мы закончим выполнение внешней функции, эта временная память будет удалена. Поэтому, когда мы снова вызываем внешнюю функцию, у нас нет ранее сохраненной памяти для доступа.
Каким будет результат следующего?
1 и 2. Замыкание будет создано, когда функция будет возвращена из другой функции, как в строке 12. Благодаря этому замыканию у нас будут постоянные справочные данные с лексической областью действия, к которым мы можем получить доступ.
Каким будет результат следующего?
1, 2 и 1, 2. Несколько экземпляров замыкания не используют одну и ту же постоянную память.
Создавайте компонуемые приложения
Не создавайте веб-монолиты. Используйте Bit для создания и компоновки несвязанных программных компонентов — в ваших любимых фреймворках, таких как React или Node. Создавайте масштабируемые и модульные приложения с мощными и приятными возможностями разработки.
Перенесите свою команду в Bit Cloud, чтобы совместно размещать и совместно работать над компонентами, а также значительно ускорить, масштабировать и стандартизировать разработку в команде. Начните с компонуемых интерфейсов, таких как Design System или Micro Frontends, или исследуйте компонуемый сервер. Попробуйте →
