DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> JavaScript支持的最大遞歸調用次數分析
JavaScript支持的最大遞歸調用次數分析
編輯:關於JavaScript     

你對JavaScript引擎能進行多少次遞歸調用好奇嗎?

多少次遞歸調用

下面的函數可以讓你找到答案: (靈感來自Ben Alman的 gist)
復制代碼 代碼如下:
function computeMaxCallStackSize() {
    try {
        return 1 + computeMaxCallStackSize();
    } catch (e) {
        // Call stack overflow
        return 1;
    }
}

三個結果:
復制代碼 代碼如下:
Node.js: 11034
Firefox: 50994
Chrome: 10402

這些數字代表什麼?Aleph先生指出,在V8中,遞歸調用的數量取決於兩個量:堆棧的大小和堆棧幀(保存參數的局部變量)的大小。你可以通過在  computeMaxCallStackSize() 添加局部變量進行驗證 - 它會返回低位值。

在ECMAScript 6中的尾部調用(Tail call)優化

ES6 有尾部調用優化 :如果一個函數中的最後一步也是一個函數調用,它會被“跳”過,而不是通過子函數調用。這就意味著在ES6(嚴格模式)下,你只要稍微改一下computeMaxCallStackSize函數,它就可以永遠執行下去。
復制代碼 代碼如下:
function computeMaxCallStackSize(size) {
    size = size || 1;
    return computeMaxCallStackSize(size + 1);
}

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved