Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: var, function scope, closure, scope chain

Что произойдёт, если внутри анонимной функции объявить переменную через var и попытаться обратиться к ней снаружи?

Проверяет понимание области видимости переменных, объявленных через var, и их недоступность за пределами функции.

Короткий ответ

Переменная, объявленная через var внутри анонимной функции, будет доступна только внутри этой функции. Снаружи к ней обратиться нельзя, так как var создаёт функциональную область видимости. Если попытаться получить доступ, возникнет ошибка ReferenceError.

Длинный ответ

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

В JavaScript переменные, объявленные с помощью ключевого слова var, имеют функциональную область видимости. Это означает, что они доступны только внутри функции, в которой были объявлены, и не видны за её пределами. Анонимная функция — это функция без имени, которая может быть присвоена переменной или передана как аргумент. Если внутри такой функции объявить переменную через var, она будет локальной для этой функции.

Пример кода

var outerVar = 'глобальная';

var myFunc = function() {
  var innerVar = 'локальная';
  console.log(innerVar); // 'локальная'
};

myFunc();
console.log(innerVar); // ReferenceError: innerVar is not defined

В примере выше переменная innerVar объявлена внутри анонимной функции, присвоенной myFunc. При попытке обратиться к ней снаружи возникает ошибка ReferenceError, так как она не существует в глобальной области видимости.

Почему так происходит?

Механизм областей видимости в JavaScript основан на лексическом окружении. Каждая функция при создании получает ссылку на внешнее окружение, но её внутренние переменные не экспортируются наружу. Это защищает данные от случайного изменения и помогает избежать конфликтов имён.

Итог

Использование var внутри функции гарантирует, что переменная будет изолирована от внешнего кода. Это полезно для инкапсуляции логики и предотвращения загрязнения глобального пространства имён. Однако в современном JavaScript чаще используют let и const с блочной областью видимости для более предсказуемого поведения.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    2

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#var

#function scope

#closure

#scope chain

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию