我得到了一些客户端 Javascript 堆栈溢出问题,特别是在 IE 浏览器, 这发生在一个第三方库中,该库进行一些函数调用,由于某些原因,它们偶尔会因为 IE 的低堆栈限制而停止。
然后我编写了一个小测试 HTML 来测试一些浏览器的堆栈大小限制,发现 IE8实际上有一个小的堆栈限制,如果与运行在笔记本电脑上的 Windows 7操作系统,8Gb 内存的 FF 7或 Chrome 14相比:
<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>
当值在3200左右时,IE 会引起堆栈溢出,如果与 IE 相比,Firefox 和 Chrome 可以处理非常深的递归。
我想知道是否有一种方法可以将堆栈溢出异常与在 IE 或其他浏览器中运行时引发堆栈溢出异常的 Javascript 函数绑定在一起,以及是否可以在出现错误的时候将堆栈跟踪与堆栈中的函数链绑定在一起。