2013-08-12 36 views
1

这是一个无限循环的递归函数。相同的功能,不同的行为时间

<html> 
<body> 
<script type="text/javascript"> 

function repeat(x){ 
document.write(x+" "); 
repeat(x+1); 
} 

repeat(1); 

</script> 
</body> 
</html> 

使用该函数,我可以看到有多少递归调用发生在内存不足之前。 第一次,我在Firefox上运行它。

结果 - > 1 2 3 ....高达40536

现在,我刷新页面

结果 - > 1 2 3 ...高达46046

!!再次刷新或运行在不同的浏览器上,我得到了不同的结果。

这怎么可能?在javascript中递归的调用堆栈逻辑/限制是什么?

回答

2

JavaScript规范没有强制任何特定的内存限制。每个实现都可以强加任何想要的内存限制。

+0

我不能老是同意这种说法。因为当我在IE中运行上述页面时,它显示'内存不足'。 – Nizam

+0

@Nizam IE显示“内存不足”并不以任何方式驳斥我的答案。 JS规范没有强加任何内存限制; IE运行时确实。这与我的答案一致。 – cdhowie

+0

我明白了..所以这取决于浏览器。谢谢你的时间。 – Nizam

相关问题