let a = 2

В данном коде при вызове bar() будет выведено 2.

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

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

В данном коде при вызове bar() будет выведено 2.

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

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

Условие

let a = 2

function foo() { console.log(a) }

function bar() { let a = 1 foo() }

bar() //

Ответ

В данном коде при вызове bar() будет выведено 2.

Объяснение:

Функция foo выводит значение переменной a, которая объявлена вне функций и равна 2. Внутри bar объявляется своя локальная a = 1, но foo не использует локальную переменную a из bar, потому что foo замкнута на лексическом окружении, где a равна 2.

То есть, foo всегда смотрит на a из внешнего скоупа, где она равна 2, независимо от того, где foo вызывается.

Пример:

let a = 2;

function foo() {
  console.log(a); // всегда 2
}

function bar() {
  let a = 1;
  foo(); // выведет 2
}

bar();

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее