Журнал

Замыкание в JS

2.08.2023

Введение

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

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

function createCounter() {
  let count = 0;

  return function() {
    count++;
    console.log(count);
  };
}

let counter = createCounter();
counter(); // Результат: 1
counter(); // Результат: 2
counter(); // Результат: 3

В данном примере функция createCounter возвращает внутреннюю функцию, которая имеет доступ к переменной count. После выполнения функции createCounter переменная count все еще доступна для работы внутри функции counter. Каждый раз при вызове функции counter значение count увеличивается на единицу и выводится в консоль.

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

Замыкания часто используются для создания приватных переменных и методов в JavaScript. При помощи замыкания можно скрыть определенные данные от внешнего доступа, но при этом дать возможность работать с этими данными через публичные методы объекта. Например:

function createCalculator() {
  let result = 0;

  return {
    add: function(num) {
      result += num;
    },
    subtract: function(num) {
      result -= num;
    },
    getResult: function() {
      return result;
    }
  };
}

let calculator = createCalculator();
calculator.add(5);
calculator.subtract(2);
console.log(calculator.getResult()); // Результат: 3

В данном примере функция createCalculator создает объект с приватной переменной result и публичными методами для работы с этой переменной. Теперь единственным общедоступным способом получить доступ к переменной result является метод getResult.

Заключение

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

Похожие статьи:

СТАРТ 23 октября 2023

Привет!
Я бот школы DevHouse.
Хочешь в IT? Я знаю как.
Preloader