2013-06-18 4 views
0

Мне нужно выполнить некоторые рекурсивные операции с использованием JavaScript.Создает ли JavaScript новый стек при каждом рекурсивном вызове?

Работает ли JavaScript-движок как Java? Для рекурсии Java запускает новый стек для каждого рекурсивного вызова. Как JavaScript справляется с этим?

+0

отн http://stackoverflow.com/questions/3660577/are-any-javascript-engines-tail-call-optimized – georg

ответ

4

ECMAscript не имеет концепции оптимизации хвоста ... еще, если это был вопрос?

Что делает Оптимизация хвоста означает?

Это означает, что кадр стека не больше нет необходимости в точке рекурсивного вызова, и, следовательно, могут быть устранены

Это, в свою очередь, означает, что, так как нет ни одного официального спецификация на эта тема, ее в значительной степени до интерпретатора, как справиться с этим. Вероятно, существуют какие-то оптимизации под капотом (V8?), Но лучше предположить, что рекурсия JS вообще не оптимизирована.

+4

..и downvoting анонимно ISN Совсем не полезно. – jAndy

+0

Не знаете, почему это занижено, так как это правильный ответ. Стандарт не делает никаких гарантий так или иначе. –

1

Да, каждый рекурсивный вызов создать новую запись стека

+0

в javascript? и во всех браузерах ». –

Смежные вопросы