> Что происходит при запуске бесконечной рекурсивной функции с console.log в браузере (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Точка
Стек: JavaScript
> Пример ответа
При запуске бесконечной рекурсивной функции с console.log в браузере происходит следующее:
-
Stack Overflow (переполнение стека вызовов) - браузер имеет ограничение на глубину стека (обычно ~10 000-50 000 вызовов). Каждый рекурсивный вызов добавляет новый фрейм в стек, и когда лимит превышен, выбрасывается ошибка
RangeError: Maximum call stack size exceeded. Выполнение прерывается,console.logперестаёт выводить данные. -
Зависание или "заморозка" интерфейса - до возникновения ошибки браузер занят выполнением синхронного кода. Если рекурсия не содержит условий выхода, цикл событий (event loop) блокируется, и пользовательский интерфейс перестаёт реагировать на действия (клики, скролл и т.д.).
-
Вывод в консоль - каждый вызов
console.logбудет отправлять сообщение в консоль разработчика, но из-за синхронной природы и быстрого переполнения стека вы увидите только часть логов (до момента ошибки). В некоторых браузерах консоль может отображать сообщения с задержкой или группировать их.
Пример:
JAVASCRIPTfunction recurse() {console.log('Вызов');recurse();}recurse();// Вывод: 'Вызов' повторяется ~10 000 раз, затем ошибка.
Итог: бесконечная рекурсия с console.log приводит к переполнению стека, блокировке UI и частичному выводу логов до момента ошибки.
> Похожие задачи по frontend
Какие ключи могут быть в объекте и в Map в JavaScript
Что такое иммутабельность в JavaScript
Почему нельзя использовать JSON.stringify и JSON.parse для глубокого копирования объектов с функциями в JavaScript
Какие есть стандарты JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью