我在客户端Javascript中遇到了一些堆栈溢出问题,尤其是在IE浏览器中发生了这种情况。这是在一个第三方库内部发生的,该库进行了一些函数调用,由于IE浏览器的堆栈限制较低,所以它们偶尔会出现故障。
然后我编写了一个小测试HTML来测试某些浏览器的堆栈大小限制,并发现与运行Windows 7操作系统、8GB RAM的笔记本电脑上运行的FF 7或Chrome 14相比,IE8实际上具有较小的堆栈限制:
<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可以处理更深层次的递归。
我想知道是否有一种方法可以在运行时将堆栈溢出异常与引发它的Javascript函数绑定,在IE或任何其他浏览器中,并且是否可以在错误引发时提供包含堆栈中函数链的堆栈跟踪。