Почему глобалы считают вредными
- Коллизии имён — две библиотеки пишут в
window.utils → тихие баги.
- Скрытые зависимости — функция читает глобал; тестировать и понимать поток данных сложно.
- Случайная мутация — любой код может перезаписать значение.
- Утечки и жизнь дольше нужного — данные висят, пока живá страница.
- Сложнее tree-shaking / модульность — граница модулей размыта.
window.state = { user: null };
export const state = { user: null };
Как смягчать
- ES-модули вместо одного большого скрипта.
- Явный DI / контекст React / Pinia / Redux.
- IIFE / namespace только если легаси.
- Strict mode против неявных глобалов.
Итог: глобалы удобны на пять минут и дороги годами поддержки: конфликты, неявность, хрупкость тестов.