Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про JavaScript: memory, leak, event

Почему важно очищать подписки и события при уничтожении компонента?

Вопрос проверяет понимание управления ресурсами, жизненного цикла компонентов и предотвращения утечек памяти.

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

Если не очищать подписки и события, компонент может продолжать работать после своего уничтожения. Это приводит к утечкам памяти и неожиданному поведению приложения. Обработчики событий могут вызываться для уже несуществующего компонента. Со временем такие ошибки накапливаются. Поэтому очистка ресурсов — обязательная часть жизненного цикла.

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

Компоненты во Vue часто подписываются на внешние источники событий, которые живут дольше самого компонента.

Что считается подписками и событиями

Подписками могут быть:

  • обработчики событий браузера

  • таймеры и интервалы

  • подписки на store или event bus

  • WebSocket и SSE соединения

Что происходит без очистки

Если компонент уничтожается, но подписка остаётся:

  1. Утечки памяти

    • ссылки на компонент сохраняются

    • сборщик мусора не может освободить память

  2. Ошибки выполнения

    • код пытается обновить уничтоженный компонент

    • возможны ошибки доступа к состоянию

  3. Неожиданное поведение

    • события обрабатываются несколько раз

    • данные обновляются в «невидимых» компонентах

Пример проблемы

mounted() {
  window.addEventListener('resize', this.onResize);
}

Без очистки обработчик останется активным даже после удаления компонента.

Вывод

Очистка подписок и событий предотвращает утечки памяти и гарантирует корректное поведение приложения при смене компонентов.

Уровень

  • Рейтинг:

    5

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

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

#memory

#leak

#event

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