что такое замыкание js
Ответы
Aleksey
04 апреля 2023
"Замыкание" - это способность функции запоминать переменные, которые были определены внутри родительской функции, даже после того, как родительская функция была выполнена.
Пример:
function createCounter() {
// переменная, которую нужно запомнить
let count = 0;
function counter() {
// увеличиваем нашу запомненную переменную
count++;
console.log(count);
}
// возвращаем функцию
return counter;
}
// создаем новую функцию (с замыканием)
const incrementCounter = createCounter();
incrementCounter(); // 1
incrementCounter(); // 2
incrementCounter(); // 3
В этом примере мы создали функцию createCounter()
, которая создает другую функцию counter()
. Внутри функции мы создали переменную count
, которая была определена внутри родительской функции. Функция counter()
возвращает значение count
, увеличивая его на 1
. Когда мы вызываем createCounter()
, она возвращает функцию counter()
, которая имеет доступ к count
благодаря замыканию. Каждый раз, когда мы вызываем incrementCounter()
,
Если мы создадим новый счетчик с помощью функции createCounter()
, то отсчет для него начнется заново.
// Создали еще одну новую функци-счетчик
const newIncrementCounter = createCounter();
newIncrementCounter(); // 1
newIncrementCounter(); // 2
newIncrementCounter(); // 3
8
0