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

相关文章

  • layui框架教程

    layui框架教程

    layui是一套开源的 Web UI 解决方案,采用自身经典的模块化规范,并遵循原生 HTML/CSS/JS 的开发方式,常适合网页界面的快速开发,这篇文章主要介绍了layui框架教程,需要的朋友可以参考下
    2022-09-09
  • 浅谈TypeScript 用 Webpack/ts-node 运行的配置记录

    浅谈TypeScript 用 Webpack/ts-node 运行的配置记录

    这篇文章主要介绍了浅谈TypeScript 用 Webpack/ts-node 运行的配置记录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • JS实现简单控制视频播放倍速的实例代码

    JS实现简单控制视频播放倍速的实例代码

    这篇文章主要介绍了通过JS来实现简单控制视频播放倍速,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • 通过javascript的匿名函数来分析几段简单有趣的代码

    通过javascript的匿名函数来分析几段简单有趣的代码

    想起自己很久以前学习javascript的经历,也曾经碰到过几个由匿名函数造成的困扰(其中一个就是由闭包引起的),下面就整理几段简单代码讨论一下,让我们大家一起进步。
    2010-06-06
  • 前端解决跨域问题nmp安装http-server的问题

    前端解决跨域问题nmp安装http-server的问题

    这篇文章主要介绍了前端解决跨域问题-nmp安装http-server的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • pageGroup.js实现分页功能

    pageGroup.js实现分页功能

    这篇文章主要为大家详细介绍了pageGroup.js实现分页功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • javascript实现自动填写表单实例简析

    javascript实现自动填写表单实例简析

    这篇文章主要介绍了javascript实现自动填写表单的方法,以一个简单实例形式分析了JavaScript结合浏览器设置实现自动保存表单的相关技巧,需要的朋友可以参考下
    2015-12-12
  • 非常不错的[JS]Cookie精通之路

    非常不错的[JS]Cookie精通之路

    Cookies,有些人喜欢它们,有些人憎恨它们。但是,很少有人真正知道如何使用它们。现在你可以成为少数人中的成员-可以自傲的 Cookie 大师。
    2008-06-06
  • JS常用的几种数组遍历方式以及性能分析对比实例详解

    JS常用的几种数组遍历方式以及性能分析对比实例详解

    这篇文章主要介绍了JS常用的几种数组遍历方式以及性能分析对比,结合实例形式详细分析了javascript针对数组遍历的几种常见使用方法及执行效率对比,具有一定参考借鉴价值,需要的朋友可以参考下
    2018-04-04

最新评论