可能很多朋友对js能够支持最大的递归次数比较感兴趣,下面就简单做一下介绍,希望能够给需要的朋友带来帮助,最好自己在本地进行一下相关的测试,这才能够给自己深刻的印象。

代码如下:
   [ 其他 ] 运行代码    下载代码
<script>
function computeMaxCallStackSize(){  
  try{
    return 1 + computeMaxCallStackSize();
  } 
  catch (e){
    // Call stack overflow
    return 1;
  }
}
</script>
测试结果如下:
   [ 其他 ] 运行代码    下载代码
<script>
Node.js: 11034
Firefox: 50994
Chrome: 10402
</script>
在V8中,递归调用的数量取决于两个量:堆栈的大小和堆栈帧(保存参数的局部变量)的大小。可以通过在computeMaxCallStackSize() 添加局部变量进行验证,它会返回低位值。

ECMAScript6中的尾部调用(Tail call)优化:

ES6有尾部调用优化:如果一个函数中的最后一步也是一个函数调用,它会被“跳”过,而不是通过子函数调用。这就意味着在ES6(严格模式)下,你只要稍微改一下computeMaxCallStackSize函数,它就可以永远执行下去。
   [ 其他 ] 运行代码    下载代码
<script>
function computeMaxCallStackSize(size) {
  size = size || 1;
  return computeMaxCallStackSize(size + 1);
}
</script>

代码描述:js支持 最大递归次数。js支持最大递归次数代码实例



221 295



用户评论
大牛,别默默的看了,快登录帮我点评一下吧!:)      登录 | 注册



×
×
51前端

注册

×
绑定手机

请绑定手机号,在继续操作

×
单次下载支付

应付金额:279

支付完成后,回到下载页面,在进行下载

官方QQ群
意见反馈
qq群

扫描上面二维码加微信群

官方QQ群

jQuery/js讨论群
群号:642649996
Css3+Html5讨论群
群号:322131262

加群请备注:从官网了解到