Глобальные переменные доступны из любого места программы (в пределах окружения): в браузере это свойства window / globalThis, в Node — global / globalThis.
var legacy = 1; // в скрипте браузера → window.legacywindow.appConfig = {}; // явный глобал
globalThis.API_URL = "/"; // универсально
let/const на верхнем уровне скрипта не становятся свойствами window, но всё равно «глобальны» для этого скрипта/модуля по-разному:
модуль: верхний уровень — область модуля, не shared global;
classic script: var → window, let/const — script-global без window.*.
Как появляются случайно
functionf() {
leak = 10; // без объявления → global (non-strict)
}
Итог: глобал — данные, видимые «отовсюду» в окружении; современные приложения стараются их минимизировать (модули, DI, store).