Firefox,Chrome,Safari,IE等的js递归限制是什么?

Mac*_*iek 36 javascript recursion

我有一些使用相当深的递归的Javascript代码,我想知道各种浏览器中的递归限制是什么(即错误"过多的递归"将发生的点).

根据版本,任何人都有这方面的任何实数?

Ada*_*dam 41

Nicholas C. Zakas在他的博客中写道:

  • Internet Explorer 7:1,789
  • Firefox 3:3,000
  • Chrome 1:21,837
  • Opera 9.62:10,000
  • Safari 3.2:500

有在不同浏览器和操作系统的一些更多的数据在这里.

我创建了一个Browserscope测试来获取更多数据.请在这里运行.

更新:

上面的结果现已过时,但browsercope结果已更新:

  • IE 11:12,064
  • Firefox 65:20,614
  • Chrome 72:9,643
  • 歌剧57:9,638
  • Safari 12:32,035

  • 在快速阅读文章后,我把它放在一起:http://jsfiddle.net/TdWTs/ (2认同)

小智 14

要在此处添加答案,这还取决于递归中涉及的函数.例如,只需向函数添加一些参数即可更改结果:

var i=0;
function inc() {
    i++;
    inc();
}
inc();
Run Code Online (Sandbox Code Playgroud)

给了我20923,但是

var i=0;
function inc(j, k, l) {
    i++;
    inc(l, k, j);
}
inc(1, 2, 3);
Run Code Online (Sandbox Code Playgroud)

报告13949(在Chromium 39的控制台中测试).Firefox 34分别提供25085和13572.

在零参数的主体周围添加try/catch块,inc()在Chromium中提供11413帧,在Firefox中提供13161帧.使用3个参数和try/catch块,Chrome中为8967,Firefox中为7517.

我从中得到的结论是,在浏览器中靠近堆栈深度工作的应用程序可能只能根据类似于应用程序中使用的函数的经验测量来计算出来.