Глобальная область видимости
Глобальная область видимости — это область, в которой переменные доступны в любом месте файла, включая все функции и блоки.
Переменные объявляются в глобальной области, если они созданы вне всех функций, циклов, условий — то есть на самом верхнем уровне скрипта.
Пример:
let appVersion = "1.2.0"; // глобальная переменная
const apiUrl = "https://api.example.com";
function loadUserData() {
console.log(appVersion); // можно использовать — доступна
}
loadUserData();
console.log(appVersion); // тоже доступна
Такие переменные доступны везде — в любой функции, даже в файле, подключённом позже. Это удобно для настроек, которые нужны повсеместно: URL API, токен авторизации, флаги режима приложения.
Но есть серьёзный риск — загрязнение глобального пространства.
Когда много разработчиков пишут код в одном файле или подключают несколько скриптов, они могут случайно переопределить одну и ту же глобальную переменную.
Пример проблемы:
// Файл 1 (ваш код)
let user = { id: 1, name: "Петр" };
// Файл 2 (сторонний скрипт)
let user = "guest"; // ой — перезаписал ваш объект!
console.log(user); // "guest" — ваша логика сломалась
Такие ошибки сложно отловить: они проявляются не всегда, зависят от порядка загрузки файлов, и могут быть в продакшене.
Поэтому:
- Избегайте создания глобальных переменных без необходимости
- Если нужно хранить данные на уровне приложения — используйте модули или объекты-нэйспейсы
- В современном JavaScript используйте
import/export— они не создают глобальные переменные
Лучшая практика: чем меньше глобальных переменных — тем стабильнее приложение.