我有一些JavaScript代码,其中使用了相当深的递归,我想了解各种浏览器的递归限制(即“too much recursion”错误会发生的点)。
有没有人能够提供不同版本浏览器的确切数字?
我有一些JavaScript代码,其中使用了相当深的递归,我想了解各种浏览器的递归限制(即“too much recursion”错误会发生的点)。
有没有人能够提供不同版本浏览器的确切数字?
关于不同浏览器和操作系统还有更多的数据在这里。
我创建了一个Browserscope测试来获取更多数据。请在这里运行它。
上述结果现已过时,但browserscope的结果已更新:
IE 11: 12,064 Firefox 65: 20,614 Chrome 72: 9,643 Opera 57: 9,638 Safari 12: 32,035除了这里的答案,递归涉及到的函数也会影响结果。例如,仅向函数添加一些参数就可以改变结果:
var i=0;
function inc() {
i++;
inc();
}
inc();
给了我20923,但是
var i=0;
function inc(j, k, l) {
i++;
inc(l, k, j);
}
inc(1, 2, 3);
报告显示在Chromium 39控制台中测试结果为13949。 Firefox 34分别给出25085和13572。
在没有参数的inc()
函数体周围添加try/catch块,在Chromium中会产生11413个帧,在Firefox中会产生13161个帧。使用三个参数和try/catch块时,Chrome和Firefox分别为8967和7517。
我的结论是,在浏览器中接近堆栈深度的应用程序可能只能根据类似于应用程序中使用的函数的实证测量来确定堆栈深度。