Ограничение размера стека Javascript в браузере

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

Затем я написал небольшой тестовый HTML-код для проверки предельного размера стека для некоторых браузеров и обнаружил, что IE8 фактически имеет небольшой предел стека по сравнению с FF 7 или Chrome 14, работающими на ноутбуке с ОС Windows 7, 8 ГБ ОЗУ:

<html>
<body>

<!-- begin Script: -->
<script type="text/javascript">

function doSomething(){

  var i = 3200;
  doSomethingElse(i);

}

function doSomethingElse(i){
  if (i == 0) return -1;
  doSomethingElse(i-1);
}

doSomething(); 

</script>
<!-- END OF PAGE -->

</body>
</html>

IE вызывает переполнение стека при значениях около 3200, Firefox и Chrome могут обрабатывать очень глубокую рекурсию по сравнению с IE.

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

64
задан L84 12 March 2014 в 01:13
поделиться