Назад к вопросам
Junior
88
questionbank
Для чего нужны замыкания в JavaScript?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Для создания приватных переменных и методов, сохранения состояния функций между вызовами, реализации паттерна Module, каррирования и частичного применения функций. Замыкание формируется, когда внутренняя функция сохраняет доступ к лексическому окружению внешней функции даже после завершения ее выполнения.
// Пример создания приватной переменной с использованием замыкания
function createCounter() {
let count = 0; // Приватная переменная
return {
increment: function() {
count++;
console.log(count);
},
decrement: function() {
count--;
console.log(count);
}
};
}
const counter = createCounter();
counter.increment(); // Получаем доступ к `count` через метод
counter.decrement(); // Состояние `count` сохраняется
// console.log(counter.count); // Нельзя получить доступ к приватной переменной
// Пример сохранения состояния функции между вызовами
function makeCumulator(initialValue) {
let sum = initialValue;
return function(value) {
sum += value;
return sum;
};
}
const cumulate = makeCumulator(10);
console.log(cumulate(5)); // 15
console.log(cumulate(3)); // 18
// Пример реализации паттерна Module
const myModule = (function() {
let privateVariable = 'I am private';
function privateMethod() {
console.log(privateVariable);
}
return {
publicMethod: function() {
privateMethod(); // Доступ к приватным членам
}
};
})();
myModule.publicMethod();
// Пример каррирования
function curry(a) {
return function(b) {
return function(c) {
return a + b + c;
}
}
}
const sumCurried = curry(1)(2)(3);
console.log(sumCurried); // 6