Расскажи, что такое контекст в JavaScript, что такое лексическое окружение и как работают замыкания?
Ответ от нейросети
sobes.tech AI
В JavaScript контекст (context) — это значение, которое находится в переменной this внутри функции. Контекст определяет, к какому объекту относится вызов функции. Он зависит от способа вызова функции: метод объекта, вызов через call/apply, стрелочные функции и т.д.
Лексическое окружение — это структура, которая хранит переменные и функции, доступные в текущей области видимости. Оно формируется во время компиляции кода и определяет, какие идентификаторы доступны в конкретном месте программы.
Замыкание — это функция, которая «запоминает» своё лексическое окружение, даже если она вызывается вне своей исходной области видимости. Это позволяет функции иметь доступ к переменным из внешней функции после того, как та уже завершила выполнение.
Пример замыкания:
function makeCounter() {
let count = 0;
return function() {
count += 1;
return count;
};
}
const counter = makeCounter();
console.log(counter()); // 1
console.log(counter()); // 2
Здесь внутренняя функция сохраняет доступ к переменной count из внешней функции, создавая замыкание.