Что такое замыкания в JS?

148
20 сентября 2021, 05:00

Лексическое окружение понятно, а как понять замыкания в JS. Какую функцию она выполняет. Можете в простом примере простыми словами объяснить. Почти все видео-уроки бесполезны. В нижеприведенном коде замыкания какую функцию выполняет?

function person() { 
  let name = 'Peter'; 
   
  return function displayName() { 
    console.log(name); 
  }; 
} 
let peter = person(); 
peter(); // 'Peter'

Answer 1

Замыкание - это возможность внутри функции обращаться к переменным, объявленным не в самой функции, а в одном из содержащих её блоков.

Ещё замыканием можно назвать всё множество таких переменных.

В твоём примере переменная name доступна через замыкание.

Answer 2

Замыкание – это функция вместе со всеми внешними переменными, которые ей доступны. То есть, замыкание – это функция + внешние переменные. Тем не менее, в JavaScript есть небольшая терминологическая особенность. Обычно, говоря «замыкание функции», подразумевают не саму эту функцию, а именно внешние переменные. Иногда говорят «переменная берётся из замыкания». Это означает – из внешнего объекта переменных. (источник: https://learn.javascript.ru/closures)

Answer 3

Способ, с помощью которого я навсегда запомнил замыкания — это сравнение их с рюкзаком. Когда функция создана и передаётся куда-либо, или возвращается из другой функции, то она носит с собой рюкзак. А в этом рюкзаке хранятся все переменные, которые были в области видимости во время создания этой функции. (Источник: https://medium.com/nuances-of-programming/я-никогда-не-понимал-замыкания-в-javascript-часть-первая-3c3f02041970 )

READ ALSO
Не работает событие onclick

Не работает событие onclick

сразу же извиняюсь, если ошибка была глупойЕсть изображение, при нажатии на него, див с ид фильтр должен становиться блочным

92
ошибка синтаксиса Jquery

ошибка синтаксиса Jquery

разворачиваю проект на VDS сервереОтладчик выдал ошибку скрипте jquery: SyntaxError: ',:x' is not a valid selector*

108
Redux form и проблемный инпут

Redux form и проблемный инпут

Есть две формы,регисnрация и авторизацияС регистрацией все норм

143