PassFront
  1. PassFront
  2. База знаний
  3. Продвинутые темы

В чем разница между внешней и глобальной областями видимости?

Продвинутые темы

Внешняя (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: текущая → внешние → глобальная (последнее звено).

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