Область видимости Javascript и цепочка областей видимости

Область видимости — это место, где мы можем получить доступ к определенной объявленной переменной в Javascript, когда переменная недоступна в определенной области видимости, она не может быть использована в ней.

Типы областей видимости

В Javascript существует 3 основных типа областей видимости

Глобальная область видимости

Это область видимости, в которой вы можете получить доступ к любой объявленной переменной или функции, и она находится на верхнем уровне.

const name = "John";
console.log(name); // John
Вход в полноэкранный режим Выход из полноэкранного режима

имя переменной создается в глобальной области видимости, поэтому она доступна везде, даже внутри области видимости функции

const name = "John";
function logName() {
    console.log(name); //John
}
logName();
Войти в полноэкранный режим Выйти из полноэкранного режима

Область видимости функции

Это область видимости внутри функций и методов, и все, что там объявлено, не может быть доступно в глобальной области видимости

function createName() {
    const name = "John";
    console.log(name); // John
}
createName();
console.log(name); // name is not defined
Войти в полноэкранный режим Выйти из полноэкранного режима

Область видимости блока (только ES6)

Это область видимости внутри операторов if и циклов, любая переменная, объявленная там с помощью let и const, не может быть доступна вне этой области видимости.

if (true) {
    const name = "John";
}
console.log(name); // name is not defined
Вход в полноэкранный режим Выйти из полноэкранного режима

Однако, если мы объявим переменную с помощью var, к ней можно будет получить доступ вне области видимости

if (true) {
    var name = "John";
}
console.log(name); // John
Войти в полноэкранный режим Выйти из полноэкранного режима

Цепочка областей видимости

Если мы создаем область видимости внутри области видимости внутри другой области видимости, мы создаем цепочку областей видимости

Пример

function fnc1() {
  //scope 2
  return function () {
    //scope 3
    return function () {
      //scope 4
      return function () {
        //scope 5
      };
    };
  };
}
Войти в полноэкранный режим Выход из полноэкранного режима

и каждая область видимости имеет доступ только к переменным, объявленным в области видимости более высокого уровня.
Область видимости 5 имеет доступ ко всем переменным областей видимости 4, 3, 2 и глобальной области видимости
область видимости 4 имеет доступ ко всем переменным областей видимости 3, 2 и глобальной области видимости
и т.д.

Оцените статью
Procodings.ru
Добавить комментарий