Sobes.tech
Назад к вопросам
Middle+
18

Расскажи, что такое контекст в JavaScript, что такое лексическое окружение и как работают замыкания?

Компании, где спрашивали
OZONOZON

Ответ от нейросети

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 из внешней функции, создавая замыкание.