PassFront
  1. PassFront
  2. База знаний
  3. Основы языка

Какие области видимости есть в JS?

Основы языка

В JavaScript есть глобальная, функциональная, блочная область видимости и область модуля. Они определяют, где доступны переменные.

Виды областей видимости

Глобальная

Переменные вне функций и блоков — доступны везде. В браузере привязываются к window (для var/функций).

const global = 'виден везде';

Функциональная

Переменные внутри функции (включая var и параметры) — видны во всей функции.

function fn() {
  var x = 1; // видна во всей fn
}

Блочная

let и const внутри {} (if, for, просто блок) — видны только в этом блоке.

{
  let y = 2; // только в блоке
}

Модульная

В ES-модулях переменные верхнего уровня видны только внутри модуля (не глобальны) — область модуля.

Лексическая область и scope chain

JS использует лексический scope: доступность определяется местом объявления. Поиск переменной идёт по цепочке областей наружу — до глобальной. На этом основаны замыкания.

const a = 1;
function outer() {
  const b = 2;
  return () => a + b; // замыкание видит внешние области
}

Коротко для собеседования

Области видимости: глобальная (везде), функциональная (var, параметры — во всей функции), блочная (let/const в {}), модульная (верхний уровень ES-модуля). JS лексический — доступность по месту объявления, поиск по scope chain наружу. Основа замыканий.

Другие вопросы раздела