Почему в ES6 появились var, let и const, в чем между ними разница?

В JavaScript поиск переменных происходит через цепочку областей видимости (scope chain), которая формируется лексическим окружением (lexical environment).

Короткий ответ

Что ответить на собеседовании

В JavaScript поиск переменных происходит через цепочку областей видимости (scope chain), которая формируется лексическим окружением (lexical environment).

Подробный разбор

Ответ с пояснениями

В JavaScript поиск переменных происходит через цепочку областей видимости (scope chain), которая формируется лексическим окружением (lexical environment).

Лексическое окружение — это структура, которая содержит привязки идентификаторов (переменных, функций) к их значениям и ссылку на внешнее лексическое окружение.

Когда интерпретатор встречает обращение к переменной, он ищет её сначала в текущем лексическом окружении. Если переменная не найдена, поиск продолжается во внешнем окружении, и так далее, пока не достигнет глобального окружения. Если переменная не найдена нигде — будет ошибка.

Пример:

function outer() {
  let a = 1;
  function inner() {
    let b = 2;
    console.log(a + b); // ищет b в inner, a во внешнем outer
  }
  inner();
}
outer();

Здесь inner имеет доступ к своей переменной b и к переменной a из внешнего окружения outer благодаря цепочке областей видимости.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку