2013-08-12 37 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

相關問題