Замыкание (closure) — это особенность JavaScript, которая позволяет функции запоминать и доступать переменные из своей области видимости в момент создания, даже после того, как выполнение функции, в которой они были объявлены, завершено. Другими словами, функция имеет доступ к переменным из внешних областей видимости по отношению к ней.

Пример замыкания:

function createCounter() {
  let counter = 0;
  return function() {
    counter += 1;
    return counter;
  };
}

const myCounter = createCounter();
console.log(myCounter()); // Выводит 1
console.log(myCounter()); // Выводит 2