这是无限循环的递归函数。
<html>
<body>
<script type="text/javascript">
function repeat(x){
document.write(x+" ");
repeat(x+1);
}
repeat(1);
</script>
</body>
</html>
使用该函数,我可以看到在内存不足之前发生了多少次递归调用。 第一次,我在firefox上运行它。
结果 - &gt; 1 2 3 ....至40536
现在,我刷新页面
结果 - &gt; 1 2 3 ......高达46046
!!再次刷新或在不同的浏览器上运行,我得到了不同的结果。
这怎么可能? javascript中递归的调用堆栈逻辑/限制是什么?
答案 0 :(得分:2)
JavaScript规范并未强制要求任何特定的内存限制。每个实现都可以强加它想要的任何内存限制。
答案 1 :(得分:2)
Internet Explorer 7: 1,789
Firefox 3: 3,000
Chrome 1: 21,837
Opera 9.62: 10,000
Safari 3.2: 500
这是一些限制
参考这个 http://javascriptrules.com/2009/06/30/limitation-on-call-stacks/
还有这个
http://www.nczonline.net/blog/2009/05/19/javascript-stack-overflow-error/