archi_kud
@archi_kud
Frontend Developer

Как создать замыкание?

Здравствуйте, недавно проходил интервью на позицию Junior Frontend Developer и интервьюер спросил меня про замыкания. Я ему ответил, что это функция которая запоминает лексическое окружение, в котором она была создана и т.д. Для примера сказал, что для создания замыкания нужно из функции вернуть функцию, в которой используются локальные переменные функции родителя. Потом он спросил, что обязательно ли для замыкания возвращать функцию или достаточно лишь {} самой функции. Я подумал в голове и сказал, что нужно возвращать функцию, но он сказал, что достаточно лишь {} и возвращение функции - это частый случай применения замыканий на практике. Весь интернет перерыл, но все примеры именно с возвратом функции. Можете объяснить, возможно я чего-то не понимаю?
  • Вопрос задан
  • 166 просмотров
Решения вопроса 2
rockon404
@rockon404
Frontend Developer
MDN: Замыкания

Википедия:
Все функции в JavaScript это замыкания, то есть всегда, когда создается функция — всегда создается замыкание, хоть и зачастую оно пустое, так как функции обычно из объявления контекста как правило ничего не используют. Но нужно понимать разницу между созданием замыкания и созданием нового scope-объекта: замыкание (функция + ссылка на текущую цепочку scope-объектов) создается при определении функции, но новый scope-объект создается (и используется для модификации цепочки scope-объектов замыкания) при каждом вызове функции.

Замыкание
Ответ написан
Комментировать
@StockholmSyndrome
объявите любую функцию и получите замыкание

const value = 1; 
function f() {
  console.log(value);
}
здесь функция f запоминает своё лексическое окружение и выводит переменную из него
чем не замыкание?
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы