Что такое стек вызовов?
Массивы и структуры данных
Стек вызовов (call stack) — это структура данных, отслеживающая, какие функции сейчас выполняются: при вызове функции её контекст кладётся в стек, при завершении — снимается.
Как работает (LIFO)
Стек работает по принципу LIFO (последним вошёл — первым вышел):
function first() { second(); }
function second() { third(); }
function third() { console.log('в third'); }
first();
// Стек:
// first → second → third
// (third завершается) → second → first → пустоОднопоточность
JavaScript имеет один call stack — выполняется одна операция за раз (однопоточность). Асинхронные коллбэки ждут в очередях и попадают в стек через Event Loop, когда он пуст.
Переполнение стека
Слишком глубокая рекурсия без базового случая переполняет стек:
function recurse() { recurse(); }
recurse(); // RangeError: Maximum call stack size exceededРоль в отладке
Stack trace в ошибках показывает цепочку вызовов — стек вызовов на момент ошибки.
Коротко для собеседования
Стек вызовов (call stack) — LIFO-структура выполняющихся функций: вызов кладёт контекст в стек, завершение снимает. В JS один стек (однопоточность). Глубокая рекурсия → переполнение (Maximum call stack size exceeded). Stack trace ошибки — это состояние стека.