浏览器Javascript堆栈大小限制
我在IE浏览器中遇到了一些客户端Javascript堆栈溢出问题,这是在第三方库中发生的,该库进行了一些函数调用,并且由于某些原因,它们有时仅由于IE栈限制低而在IE中制动。
然后,我编写了一个小的测试HTML,以测试某些浏览器的堆栈大小限制,并发现与运行Windows 7 OS,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可以处理非常深的递归。
我想知道是否有一种方法可以将堆栈溢出异常与在IE或任何其他浏览器中在运行时引发它的Javascript函数联系起来,以及是否可以在当下将堆栈跟踪与函数链一起提供给错误被提出。
回答:
使用一个简单的测试:
var i=0;function inc() {
i++;
inc();
}
inc();
IE浏览器
- IE6:1130
- IE7:2553
- IE8:1475
- IE9:20678
- IE10:20677
火狐浏览器
- 3.6:3000
- 4.0:9015
- 5.0:9015
- 6.0:9015
- 7.0:65533
- 8b3:63485
- 17:50762
- 18:52596
- 19:52458
- 42:281810
谷歌浏览器
- 14:26177
- 15:26168
- 16:26166
- 25:25090
- 47:20878
- 51:41753
苹果浏览器
- 4:52426
- 5:65534
- 9:63444
歌剧
- 10.10:9999
- 10.62:32631
- 11:32631
- 12:32631
关于您的问题,请使用浏览器的开发人员工具查看堆栈。在IE8+中,单击F12
,转到“脚本”选项卡,然后单击“开始调试”。当引发异常时,它将中断,您可以看到调用堆栈。您还可以使用Chrome的开发者工具,Ctrl
+
Shift
+ J
。
以上是 浏览器Javascript堆栈大小限制 的全部内容, 来源链接: utcz.com/qa/432418.html