国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript支持的最大遞歸調用次數分析

2019-11-20 14:24:20
字體:
來源:轉載
供稿:網友

你對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);
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 股票| 墨江| 阿克| 咸阳市| 汉阴县| 台湾省| 宁都县| 卫辉市| 晋城| 呼和浩特市| 莱西市| 宁南县| 华亭县| 昌都县| 普兰县| 绥江县| 二连浩特市| 两当县| 班玛县| 莱州市| 和顺县| 天等县| 盘山县| 湖南省| 寿光市| 岚皋县| 临西县| 太和县| 黄石市| 米脂县| 漠河县| 绍兴县| 监利县| 三河市| 伊金霍洛旗| 乌拉特中旗| 宝山区| 互助| 成安县| 瑞安市| 宁国市|