PassFront
  1. PassFront
  2. База знаний
  3. Массивы и структуры данных

Что такое стек вызовов?

Массивы и структуры данных

Стек вызовов (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 ошибки — это состояние стека.

Другие вопросы раздела