Каковы ограничения рекурсии js для Firefox, Chrome, Safari, IE и т.д.?

У меня есть код Javascript, который использует довольно глубокую рекурсию, и я хотел бы узнать, каковы пределы рекурсии в разных браузерах (т.е. точка, в которой произойдет ошибка "слишком много рекурсии" ).

У кого-нибудь есть целые числа на этом, по версии?

Ответ 2

Чтобы добавить к ответам здесь, это может зависеть и от функций, участвующих в рекурсии. Например, просто добавление нескольких параметров в функцию может изменить результат:

var i=0;
function inc() {
    i++;
    inc();
}
inc();

дает мне 20923, но

var i=0;
function inc(j, k, l) {
    i++;
    inc(l, k, j);
}
inc(1, 2, 3);

сообщает 13949 (протестирован в консоли в Chromium 39). Firefox 34 дает 25085 и 13572 соответственно.

Добавление блока try/catch вокруг тела нулевого аргумента inc() дает 11413 кадров в Chromium и 13161 в Firefox. С 3 аргументами и блоком try/catch, 8967 в Chrome и 7517 в Firefox.

Мой взнос от этого заключается в том, что приложение, которое работает вблизи глубины стека в браузере, возможно, только может понять это на основе эмпирических измерений функций, похожих на те, которые используются в приложении.