Call stack (стек вызовов) — это структура данных LIFO (Last In, First Out), которую JavaScript использует для отслеживания и управления активными выполнениями функций.
function first() { second(); }
function second() { third(); }
function third() { console.log("done"); }
first();
// Stack: [first] → [first, second] → [first, second, third]
// → [first, second] → [first] → []
Если стек растёт сверх своего максимального размера, JavaScript выбрасывает:
RangeError: Maximum call stack size exceeded
Это обычно происходит при бесконечной рекурсии — когда функция вызывает саму себя без базового случая:
function infinite() {
return infinite(); // нет базового случая
}
infinite(); // RangeError
Call stack гарантирует, что JavaScript выполняет функции в правильном порядке. Понимание его необходимо для отладки ошибок переполнения стека и написания эффективных рекурсивных функций с правильными условиями завершения.
Рекурсивная функция без базового случая в итоге вызовет RangeError, превысив максимальный размер call stack.
Новый — ещё не проверен сообществом
Вы