JavaRush /Курсы /Модуль 1: Web Core /Области видимости

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

Модуль 1: Web Core
18 уровень , 4 лекция
Открыта

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

Области видимости (scopes) определяют доступность переменных и функций в разных частях программы. В JavaScript существует три основных типа областей видимости: глобальная, локальная и блочная. Понимание этих областей видимости важно для эффективного управления данными и предотвращения ошибок в коде.

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

Пример 1: Объявление глобальных переменных

JavaScript
    
      var globalVar = 'I am a global variable';

      function showGlobalVar() {
        console.log(globalVar); // Доступ к глобальной переменной
      }
      showGlobalVar(); // Выведет: I am a global variable

      console.log(globalVar); // Доступ к глобальной переменной
    
  

Пример 2: Глобальные функции

В этом примере переменная globalVar и функция globalFunction() объявлены в глобальной области видимости и доступны из любого места в коде.

JavaScript
    
      function globalFunction() {
        return 'I am a global function';
      }

      console.log(globalFunction()); // Выведет: I am a global function
    
  

5.2 Локальная область видимости

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

Пример 3: Объявление локальных переменных

В этом примере переменная localVar объявлена внутри функции localScopeExample() и недоступна за пределами этой функции:

JavaScript
    
      function localScopeExample() {
        var localVar = 'I am a local variable';
        console.log(localVar); // Доступ к локальной переменной
      }

      localScopeExample(); // Выведет: I am a local variable

      console.log(localVar); // Ошибка: localVar is not defined
    
  

Пример 4: Локальные функции

В этом примере функция innerFunction() объявлена внутри функции outerFunction() и недоступна за пределами outerFunction():

JavaScript
    
      function outerFunction() {
        function innerFunction() {
          return 'I am a local function';
        }
        console.log(innerFunction()); // Доступ к локальной функции
      }

      outerFunction(); // Выведет: I am a local function

      console.log(innerFunction()); // Ошибка: innerFunction is not defined
    
  

5.3 Блочная область видимости

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

Пример 5: Объявление переменных с let

В этом примере переменная blockVar объявлена внутри блока if и недоступна за его пределами:

JavaScript
    
      if (true) {
        let blockVar = 'I am a block-scoped variable';
        console.log(blockVar); // Доступ к блочной переменной
      }

      console.log(blockVar); // Ошибка: blockVar is not defined
    
  

Пример 6: Объявление переменных с const

В этом примере переменная i объявлена внутри блока for и недоступна за его пределами:

JavaScript
    
      for (const i = 0; i < 3; i++) {
        console.log(i); // Доступ к блочной переменной
      }

      console.log(i); // Ошибка: i is not defined
    
  

Особенности блочной области видимости

Пример 7: Вложенные блоки

В этом примере переменная innerVar доступна только внутри внутреннего блока, а переменная outerVar доступна как во внешнем, так и во внутреннем блоках:

JavaScript
    
      if (true) {
        let outerVar = 'I am in the outer block';

        if (true) {
          let innerVar = 'I am in the inner block';

          console.log(outerVar); // Доступ к переменной внешнего блока
          console.log(innerVar); // Доступ к переменной внутреннего блока
        }

        console.log(outerVar); // Доступ к переменной внешнего блока
        console.log(innerVar); // Ошибка: innerVar is not defined
      }
    
  

5.4 Взаимодействие различных областей видимости

Пример 8: Взаимодействие глобальной и локальной областей видимости

В этом примере функция scopeExample() имеет доступ к глобальной переменной globalVar и к своей локальной переменной localVar:

JavaScript
    
      var globalVar = 'I am a global variable';

      function scopeExample() {
        var localVar = 'I am a local variable';

        console.log(globalVar); // Доступ к глобальной переменной
        console.log(localVar);  // Доступ к локальной переменной
      }

      scopeExample(); // Выведет: I am a global variable
                      //  I am a local variable

      console.log(globalVar); // Доступ к глобальной переменной
      console.log(localVar);  // Ошибка: localVar is not defined
    
  

Пример 9: Области видимости с функцией-стрелкой

В этом примере функция-стрелка arrowFunction() имеет доступ к глобальной переменной globalVar и к своей локальной переменной localVar:

JavaScript
    
      let globalVar = 'I am a global variable';

      const arrowFunction = () => {
        let localVar = 'I am a local variable in arrow function';

        console.log(globalVar); // Доступ к глобальной переменной
        console.log(localVar);  // Доступ к локальной переменной
      };

      arrowFunction(); // Выведет: I am a global variable
                       // I am a local variable in arrow function

      console.log(globalVar); // Доступ к глобальной переменной
      console.log(localVar);  // Ошибка: localVar is not defined
    
  
1
Задача
Модуль 1: Web Core, 18 уровень, 4 лекция
Недоступна
Глобальная переменная
Глобальная переменная
1
Задача
Модуль 1: Web Core, 18 уровень, 4 лекция
Недоступна
Блочная область
Блочная область
1
Опрос
Функции, 18 уровень, 4 лекция
Недоступен
Функции
Функции
Комментарии (6)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Анастасия Уровень 34
10 августа 2025
Пример 6 - не корректен! циклы с такими кронстантами не будут работать! Чтобы пример заработал надо прописать итак:

for (let j = 0; j < 3; j++) {
    console.log(j); // Доступ к блочной переменной
}

 console.log(j); // Ошибка: i is not defined
Вот нормальный пример с константой (тоже тупенький, ну попробовала пример переделать в рабочий вариант...

for (let j = 0; j < 3; j++) {
    const pi = 3.14
    console.log(j + pi); // Доступ к блочной переменной
}

console.log(pi); // Ошибка: pi is not defined
Второе задание в пратике вообще волшебное - просят вывести значение переменной за блоком, чтобы увидеть разницу, при этом не проходит 3ю проверку... потому что - ошибка (да не ужели! сами же попросили!), пришлось искать обрабоку ошибок, реально??? вы бы хоть в задании намекнули на это.... Такое ощущение, что чем глубже погружаемся - тем больше косяков в курсе, что самое пичальное, судя по комментариям(некоторые довольно старые) - это не исправляют =(
Maxim Kulikov Уровень 48
28 июня 2025
Вот и я столкнулся с задачей, которая через плагин не проходит, а на сайте то же самое проходит проверку.
Vadim Makarenko Уровень 42
17 июля 2025
У меня вторая задача одинаково не прошла ни через плагин, ни через сайт. Другое дело, что сайт даёт подсказку в таком виде, которая позволяет проблему решить. Хотя обработку ошибок мы ещё не проходили.
Любовь Уровень 28
10 августа 2025
То же самое. Можно прописать решение (попытки вывода значения переменной за пределами блока) и закомментировать его, через плагин все получилось.
RayCowperwood Уровень 48
28 мая 2025

Пример 2: Глобальные функции

В этом примере переменная globalVar
что-то в упор не вижу в этом примере переменной glovalVar
Максим Уровень 50
3 ноября 2024
В цикле объявили индекс константой for (const i = 0; i < 3; i++) Ошибка об этом и говорит: Uncaught TypeError: Assignment to constant variable А не о том, что константа вне зоны видимости