Когда я запускаю функцию ниже, я получаю разные результаты в разных браузерах:
function maxCallStackSize0() {
try {
return 1 + maxCallStackSize0();
} catch (e) {
return 1;
}
}
maxCallStackSize0(); // Opera: 32354, Chrome: 12795
Но это еще не все.Результат также меняется, если я запускаю его несколько раз вручную:
maxCallStackSize0(); // Opera: 34724
maxCallStackSize0(); // Opera: 33776
maxCallStackSize0(); // Opera: 34030
Это из-за того, что другие функции, вызываемые в фоновом режиме, занимают часть стека?
Я также видел, чточем больше аргументов я передаю, тем меньше стек вызовов:
function maxCallStackSize3(s1, s2, s3, s4) {
try {
return 1 + maxCallStackSize3(s1, s2, s3, s4);
} catch (e) {
return 1;
}
}
maxCallStackSize3("hello", "how", "are", "you"); // Opera: 13979, Chrome: 6971
Это потому, что параметры являются частью стека вызовов, и чем больше / больше параметров размера я передаю, тем короче стек вызововбыть до его переполнения?
Можно ли узнать максимальный размер стека вызовов в байтах?
Спасибо