代码描述:js支持 最大递归次数。js支持最大递归次数代码实例
可能很多朋友对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>
请绑定手机号,在继续操作
注意:只有绑定手机以后,才可使用网站全部功能