🎯 Собеседование: замыкания в JS

Вопрос → короткий ответ → подводный камень.

Примеры · Программирование · #js #interview

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

Функция вместе с ссылкой на переменные из места, где она создана. Переменные живут, пока жива функция.

function counter() {
  let n = 0;
  return () => ++n;
}
const next = counter();
next(); // 1
next(); // 2

Классическая ловушка

for (var i = 0; i < 3; i++) setTimeout(() => console.log(i));
// 3 3 3  (одна `var i` на всех)

for (let i = 0; i < 3; i++) setTimeout(() => console.log(i));
// 0 1 2  (`let` создаёт новую переменную на итерацию)

Совет: Если спросят «зачем нужно»: приватное состояние, фабрики функций, каррирование, мемоизация.