Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: scope, global variable, implicit declaration, strict mode, window object

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

Проверяет понимание области видимости переменных в JavaScript и механизма создания глобальных свойств при неявном объявлении.

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

Если объявить переменную без ключевого слова (var, let, const) внутри функции, она станет свойством глобального объекта (window в браузере). Это происходит из-за того, что JavaScript автоматически создаёт глобальную переменную при присваивании значения необъявленному идентификатору. В строгом режиме ('use strict') такое поведение вызовет ошибку ReferenceError.

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

Неявное создание глобальной переменной

В JavaScript, если присвоить значение переменной, которая не была объявлена с помощью var, let или const, интерпретатор автоматически создаёт свойство на глобальном объекте (window в браузере, global в Node.js). Это происходит на этапе выполнения, а не на этапе компиляции.

Пример кода

function test() {
  myVar = 10; // неявное объявление
}
test();
console.log(myVar); // 10 — переменная доступна снаружи
console.log(window.myVar); // 10 — это свойство window

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

Когда движок JavaScript встречает присваивание myVar = 10, он сначала ищет переменную myVar в текущей области видимости. Если не находит, поднимается по цепочке областей видимости до глобальной. Если и там нет объявления, движок создаёт новое свойство на глобальном объекте.

Влияние строгого режима

В строгом режиме ('use strict') такое поведение запрещено. При попытке присвоить значение необъявленной переменной выбрасывается ReferenceError. Это помогает избежать случайного загрязнения глобальной области видимости.

'use strict';
function test() {
  myVar = 10; // ReferenceError: myVar is not defined
}
test();

Практическое применение

Неявное объявление переменных считается плохой практикой, так как может привести к трудноотловимым ошибкам и конфликтам имён. Всегда используйте let, const или var для явного объявления переменных. В современных проектах рекомендуется включать строгий режим и использовать линтеры (например, ESLint) для предотвращения таких ситуаций.

Вывод

Неявное объявление переменной внутри функции делает её глобальной, что может нарушить изоляцию кода и привести к неожиданным побочным эффектам. Используйте явное объявление и строгий режим для написания надёжного и предсказуемого JavaScript-кода.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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

Уровень

  • Рейтинг:

    4

  • Сложность:

    2

Навыки

  • JavaScript

    JavaScript

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

#scope

#global variable

#implicit declaration

#strict mode

#window object

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

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

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

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