К списку вопросов
Основы программированияjunior

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

#память#стек вызовов#gc

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

Стек вызовов хранит порядок активных вызовов и места возврата. Heap - область объектов в концептуальной модели памяти JavaScript.

Разбор

Если a вызывает b, сначала завершится b, затем выполнение вернется в a. Такая последовательность работает как стек: последним пришел - первым вышел.

Фраза «примитивы всегда физически в стеке, объекты всегда в куче» слишком упрощает оптимизации движка. Объект также может пережить вызов создавшей его функции, например если доступен через замыкание; время сборки мусора не гарантировано.

Источники

MDN: Модель выполнения JavaScript