【发布时间】:2018-02-08 11:08:41
【问题描述】:
我在 IE 浏览器中遇到了一些客户端 Javascript 堆栈溢出问题, 这发生在第三方库中,该库进行了一些函数调用,出于某种原因,它们偶尔会在 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 可以处理非常深的递归。
我想知道是否有办法将堆栈溢出异常与在 IE 或任何其他浏览器中运行时引发该异常的 Javascript 函数联系起来,以及它是否可以在堆栈中提供带有函数链的堆栈跟踪引发错误的那一刻。
【问题讨论】:
-
3200 次调用是足够的堆栈空间。 Python 程序员(好吧,那些不热衷于编写递归下降解析器或用递归替换完全简单的循环的人)在 1000 次调用限制下相处得很好。你在做什么?
-
它没有严格的疑问句,但最后一句“I wonder if there's ...”可以以“Are there”开头并以问号结尾,产生一个相当直接的问题.
-
感谢您的反馈,我会更好地澄清问题
标签: javascript browser stack limit