Что такое область видимости?
Основы языка
Область видимости (scope) — это контекст, определяющий, где в коде доступна переменная. Она задаёт «время жизни» и видимость идентификаторов.
Виды областей видимости
- Глобальная — переменные, доступные везде.
- Функциональная — переменные внутри функции (
var, параметры). - Блочная — переменные внутри
{}дляletиconst.
let global = 'виден везде';
function outer() {
let fnScoped = 'виден в функции';
if (true) {
let blockScoped = 'виден в блоке';
}
// blockScoped здесь недоступен
}Лексическая область видимости
JavaScript использует лексический (статический) scope: доступность переменных определяется местом их объявления в коде, а не местом вызова. На этом основаны замыкания.
Цепочка областей видимости (scope chain)
Если переменная не найдена в текущей области, движок ищет её во внешней, затем ещё выше — вплоть до глобальной. Наружу — можно, внутрь — нельзя.
const a = 1;
function fn() {
const b = 2;
return a + b; // a найден во внешней области
}Коротко для собеседования
Область видимости — где доступна переменная: глобальная, функциональная, блочная. JS использует лексический scope (по месту объявления) и scope chain — поиск переменной от внутренней области к внешним. На этом строятся замыкания.