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

Замыкание имеет три цепочки областей видимости:

  • Он имеет доступ к своей собственной области видимости — переменным, определенным в его фигурных скобках.
  • Он имеет доступ к переменным внешней функции.
  • Он имеет доступ к глобальным переменным.

Некоторые примеры использования замыканий:

function makeSizer(size) {
  return function() {
    document.body.style.fontSize = size + 'px';
  };
}

var size12 = makeSizer(12);
var size14 = makeSizer(14);
var size16 = makeSizer(16);

size12, size14 и size16 теперь являются функциями, которые изменяют размер основного текста до 12, 14 и 16 пикселей соответственно.