В чем разница между внешней и глобальной областями видимости?
Продвинутые темы
Внешняя (outer) и глобальная области видимости — разные уровни: глобальная — самая верхняя (доступна везде), а внешняя — любая охватывающая область относительно текущей (не обязательно глобальная).
Глобальная область
Самый верхний уровень; переменные доступны отовсюду:
const global = 'виден везде'; // глобальнаяВ браузере привязана к window (для var/функций).
Внешняя область (относительная)
Любая охватывающая область относительно текущей функции — на один или несколько уровней выше, но не обязательно глобальная:
function outer() { // внешняя для inner
const a = 1;
function inner() { // текущая
const b = 2;
return a + b; // a — из внешней области (outer), не глобальной
}
}Здесь для inner внешняя область — outer, а глобальная — верхний уровень.
Главное различие
- Глобальная — конкретная, самая верхняя область (одна).
- Внешняя — относительное понятие: область, охватывающая текущую (может быть функцией-родителем, а не глобалью).
Scope chain
Поиск переменной идёт по цепочке: текущая → внешняя → ещё внешняя → ... → глобальная. Глобальная — последнее звено цепочки внешних областей.
Коротко для собеседования
Глобальная область — самая верхняя, доступна везде (одна). Внешняя — относительное понятие: любая охватывающая область для текущей функции (родительская функция, не обязательно глобаль). Поиск переменных идёт по scope chain: текущая → внешние → глобальная (последнее звено).