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