OurJS


OurJS-我们的JS, 我们的技术-IT文摘; 专注JS相关领域;
我们热爱编程, 我们热爱技术;我们是高大上, 有品味的码农;

欢迎您订阅我们的技术周刊


我们会向您分享我们精心收集整理的,最新的行业资讯,技术动态,外文翻译,热点文章;
我们使用第三方邮件列表向您推送,我们不保存您的任何个人资料,注重您的隐私,您可以随时退订,

欢迎分享您的观点,经验,技巧,心得

让我们一起找寻程序员的快乐,探索技术, 发现IT人生的乐趣;


本网站使用缓存技术每次加载仅需很小流量, 可在手机中流畅浏览;
如果您发现任何BUG,请即时告知我们: ourjs(at)ourjs.com

JavaScript最大堆栈的数量


分享到
分类 JS学习   关键字 JavaScript   发布 ourjs  1403408634013
注意 转载须保留原文链接,译文链接,作者译者等信息。  
你对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);
}

原文地址: 点此
社区评论 ( Beta版 )
  • #0 背后一片荒芜 1403607909000
    永远执行貌似也报错了:Uncaught RangeError: Maximum call stack size exceeded 有什么不一样嘛
  • #1 背后一片荒芜 1403608364000
    看到底还是翻译的,坑爹。。草。。把原文链接隐藏那么深。。。翻译的就是个shi、、、
  • #2 OurJS 1404948773000
    @背后一片荒芜

    原文链接在第一行,你有什么建议?
  • #3 彭必半 1424494183368

    @背后一片荒芜 ES6尚未发布,所以会报错!傻X

OnceDoc 您自己的企业内容管理系统——文档、流程、知识库、报表、网盘All In One

访问404页面,寻找丢失儿童
 热门文章 - 分享最多
  1. 我不想雇佣女性
  2. 皇帝的新衣:Node.js
  3. 如何兼职创业并避免风险
  4. PHP vs Node.js:真正的评测数据
  5. 沃尔玛为什么要采用Node.js
  6. DevOps:全能开发是如何扼杀程序员的
  7. Swift的前世今身-创始人的自述
  8. JavaScript中NaN的秘密
  9. 在JavaScript中创建命名空间的几种写法
  10. Intel: Javascript将全面支持SIMD
  11. AirJD-简单好用的免费建站工具

 相关阅读 - JS学习
  1. 7个步骤:让JavaScript变得更好
  2. 在JavaScript数组中找到最小元素的位置
  3. 在JavaScript中创建命名空间的几种写法
  4. JavaScript中NaN的秘密
  5. jQuery:在一个回调中处理多个请求
  6. 使用集群(recluster)扩展多线程Node.JS
  7. 抛弃jQuery,深入原生的JavaScript
  8. 使用Backbone构建精美应用的7条建议
  9. 在jQuery API文档中并未提及的get用法,只有读了源码才会知道哦
  10. 如何在一个VPS上连接Node.js到一个MongoDB数据库?

 关键字 - JavaScript
  1. 如何用CSS将select/option文本居中或居右对齐
  2. 你用什么代码编辑工具开发JavaScript?
  3. JavaScript条形码生成和扫码识别(Barcode scan)开源库
  4. 40行JavaScript代码实现的3D旋转魔方动画效果
  5. 使用Javascript将相对路径地址转换为绝对路径
  6. 给checkbox选择框设置不选中时的值
  7. 用原生HTML5控件实现输入框自动提示(下拉列表补全)功能
  8. JavaScript中怪异的地方
  9. 在JavaScript中创建命名空间的几种写法
  10. JavaScript中的继承,构造函数以及new关键字的作用

 欢迎订阅 - 技术周刊

我们热爱编程, 我们热爱技术; 我们是高端, 大气, 上档次, 有品味, 时刻需要和国际接轨的码农; 欢迎您订阅我们的技术周刊; 您只需要在右上角输入您的邮箱即可; 我们注重您的隐私,您可以随时退订.
加入我们吧! 让我们一起找寻码农的快乐,探索技术, 发现IT人生的乐趣;


 关注我们

我们的微信公众号: ourjs-com
打开微信扫一扫即可关注我们:
IT文摘-程序员(码农)技术周刊

ourjs官方微信号