JavaScript支持的最大递归调用次数分析

 更新时间:2014年06月24日 10:44:56   投稿:junjie  
这篇文章主要介绍了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);
}

相关文章

  • 使用原生js编写一个简单的框选功能方法

    使用原生js编写一个简单的框选功能方法

    这篇文章主要介绍了使用原生js编写一个简单的框选功能方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • javascript中String对象的slice()方法分析

    javascript中String对象的slice()方法分析

    这篇文章主要介绍了javascript中String对象的slice()方法,以实例形式分析了slice()方法的定义、参数与具体用法,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-12-12
  • 一个可拖拽列宽表格实例演示

    一个可拖拽列宽表格实例演示

    本文将详细介绍一个可拖拽列宽表格实例,需要了解更多的朋友可以参考下
    2012-11-11
  • JavaScript继承的三种方法实例

    JavaScript继承的三种方法实例

    这篇文章主要给大家介绍了关于JavaScript继承的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • 微信小程序中的列表切换功能实例代码详解

    微信小程序中的列表切换功能实例代码详解

    这篇文章主要介绍了微信小程序中的列表切换功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • javascript日期对象格式化为字符串的实现方法

    javascript日期对象格式化为字符串的实现方法

    本篇文章主要是对javascript日期对象格式化为字符串的实现方法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-01-01
  • JS实现对json对象排序并删除id相同项功能示例

    JS实现对json对象排序并删除id相同项功能示例

    这篇文章主要介绍了JS实现对json对象排序并删除id相同项功能,涉及javascript针对json格式数据的遍历、运算、判断、添加、删除等相关操作技巧,需要的朋友可以参考下
    2018-04-04
  • 深入浅析JavaScript的API设计原则

    深入浅析JavaScript的API设计原则

    这篇文章主要介绍了JavaScript的API设计原则,包括接口的流畅性,一致性,参数的处理,可扩展性,对错误的处理,可预见性,注释和文档的可读性,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-06-06
  • JavaScript验证一个url的方法总结

    JavaScript验证一个url的方法总结

    最近遇到几次需要校验URL的,使用这篇文章小编就为大家整理了一下几个JavaScript校验URL的方法,文中的示例代码简洁易懂,感兴趣的小伙伴可以了解一下
    2023-12-12
  • window.parent调用父框架时 ie跟火狐不兼容问题

    window.parent调用父框架时 ie跟火狐不兼容问题

    window.parent调用父框架时,ie跟火狐不兼容问题!
    2009-07-07

最新评论