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

Ответ

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

function outer() {
  const outerVar = 'I am outside!';

  function inner() {
    console.log(outerVar); // Захватывает outerVar из внешней функции
  }

  return inner;
}

const closure = outer();
closure(); // Выведет: "I am outside!"

Особенности:

  • Замыкания сохраняют ссылку на переменные, а не их значения.
  • Позволяют создавать приватные переменные (через IIFE).
  • Могут приводить к утечкам памяти, если неосторожно использовать (например, в циклах).