Область видимости

1. Область видимости

Область видимости переменных (variable scope) - доступность переменных в определенном месте кода. Есть несколько областей видимости: глобальная, блочная, eval и функции.

Глобальная область видимости используется по умолчанию. Все и вся имеют доступ к переменным объявленным в ней. Переменные объявленные в глобальной области видимости уязвимы, так как их может изменить любой участок кода.

Рассмотрим на примере. Переменная value объявлена в глобальной области видимости, то есть вне какого-то блока, и доступна в любом месте после объявления.

const value = 5;

if (true) {
  console.log('Block scope: ', value); // 5
}

console.log('Global scope: ', value); // 5
Copy

Любая конструкция использующая фигурные скобки {} (условия, циклы, функции и т. п.) создает новую локальную область видимости, и переменные, объявленные в этой области видимости, используя let или const, не доступны вне этого блока.

if (true) {
  const value = 5;
  console.log('Block scope: ', value); // 5
}

console.log('Global scope: ', value); // ReferenceError: value is not defined
Copy

Глубина вложенности областей видимости не ограничена, и все они буду работать по одному принципу - область видимости имеет доступ ко всем переменным объявленным выше по иерархии вложенности, но не может получить доступ к переменным объявленным во вложенных областях видимости.

Создадим несколько областей видимости и дадим им имена для наглядности.

  • Глобальная есть по умолчанию, создадим в ней переменную global

  • Далее используя оператор if создадим блочную область видимости block A

  • Внутри области видимости block A поставим еще один оператор if, который создаст вложенную область видимости block B

  • На одном уровне с block A, создадим область видимости block C все так же используя оператор if

Last updated