簡體   English   中英

Firefox,Chrome,Safari,IE等的js遞歸限制是什么?

[英]What are the js recursion limits for Firefox, Chrome, Safari, IE, etc?

我有一些使用相當深的遞歸的Javascript代碼,我想知道各種瀏覽器中的遞歸限制是什么(即錯誤“太多遞歸”將發生的點)。

根據版本,任何人都有這方面的任何實數?

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

要在此處添加答案,這還取決於遞歸中涉及的函數。 例如,只需向函數添加一些參數即可更改結果:

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);

報告13949(在Chromium 39的控制台中測試)。 Firefox 34分別提供25085和13572。

在零參數inc()的主體周圍添加try / catch塊,在Chromium中提供11413幀,在Firefox中提供13161幀。 使用3個參數和try / catch塊,Chrome中為8967,Firefox中為7517。

我從中得到的結論是,在瀏覽器中靠近堆棧深度工作的應用程序可能只能根據類似於應用程序中使用的函數的經驗測量來計算出來。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM