Но я слышала про хвостовую рекурсию когда интерпретатор омтимизирует вызов функций и не хранит контекст в стеке. Но не уверена реализовано ли это на данный момент в js
В книге написано было, что в v8 это уже реализовано, но как-то туманно всё объясняется