js函数递归问题


写了一个js递归调用,代码如下:

   
  <!doctype html>
  
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>

</head>
<body>
<div></div>
<script type="text/javascript">
var spans = document.getElementsByTagName("div")[0];
function c(k){
spans.innerHTML= k;
return c(k+1);
}
alert(c(1));
</script>
</body>
</html>

预想中的结果应该是无限循环直至浏览器弹出停止响应等提示。或者提示:Maximum call stack size exceeded。
但是结果不是预想中的,在每个浏览器中测试,均输出了一个较大的值。没有出错,也没有一直循环直至浏览器停止响应。测试结果如下:

测试结果

谁能解释一下么?

函数式编程 JavaScript

lancet 11 years, 1 month ago

因为栈已经满了,alert都调用不了了。

打开浏览器的开发者工具就能看到错误。

请输入图片描述

识得唔识得 answered 11 years, 1 month ago

Your Answer