最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript支持的最大遞歸調(diào)用次數(shù)分析

 更新時間:2014年06月24日 10:44:56   投稿:junjie  
這篇文章主要介紹了JavaScript支持的最大遞歸調(diào)用次數(shù)分析,也稱JavaScript支持的最大堆棧數(shù)量,需要的朋友可以參考下

你對JavaScript引擎能進行多少次遞歸調(diào)用好奇嗎?

多少次遞歸調(diào)用

下面的函數(shù)可以讓你找到答案: (靈感來自Ben Alman的 gist)

復制代碼 代碼如下:

function computeMaxCallStackSize() {
    try {
        return 1 + computeMaxCallStackSize();
    } catch (e) {
        // Call stack overflow
        return 1;
    }
}

三個結果:

復制代碼 代碼如下:

Node.js: 11034
Firefox: 50994
Chrome: 10402

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

在ECMAScript 6中的尾部調(diào)用(Tail call)優(yōu)化

ES6 有尾部調(diào)用優(yōu)化 :如果一個函數(shù)中的最后一步也是一個函數(shù)調(diào)用,它會被“跳”過,而不是通過子函數(shù)調(diào)用。這就意味著在ES6(嚴格模式)下,你只要稍微改一下computeMaxCallStackSize函數(shù),它就可以永遠執(zhí)行下去。

復制代碼 代碼如下:

function computeMaxCallStackSize(size) {
    size = size || 1;
    return computeMaxCallStackSize(size + 1);
}

相關文章

最新評論

松溪县| 牟定县| 竹溪县| 夹江县| 九龙县| 儋州市| 巨鹿县| 即墨市| 丰都县| 礼泉县| 扎鲁特旗| 张北县| 泗水县| 鲁山县| 雅江县| 桂阳县| 保康县| 兰州市| 阿拉善右旗| 连云港市| 内乡县| 上杭县| 荔波县| 汕头市| 慈利县| 临安市| 杂多县| 丰都县| 万州区| 西藏| 松潘县| 双峰县| 互助| 微博| 南城县| 南通市| 大化| 靖远县| 永清县| 太和县| 苏尼特右旗|