Что такое стек вызовов и heap?
Короткий ответ
Стек вызовов хранит порядок активных вызовов и места возврата. Heap - область объектов в концептуальной модели памяти JavaScript.
Разбор
Если a вызывает b, сначала завершится b, затем выполнение вернется в a. Такая последовательность работает как стек: последним пришел - первым вышел.
Фраза «примитивы всегда физически в стеке, объекты всегда в куче» слишком упрощает оптимизации движка. Объект также может пережить вызов создавшей его функции, например если доступен через замыкание; время сборки мусора не гарантировано.