Какие области видимости есть в 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 наружу. Основа замыканий.