javascript的递归函数问题,js高手请进!!!

<body><scripttype="text/javascript">functionfindParent(e,str){console.count("次数");if(... <body>
<script type="text/javascript">
function findParent(e,str){
console.count("次数");
if(!e.parentNode){
return null;
}
else if(e.parentNode.nodeName.toLowerCase()==str)
{
return e.parentNode;
}
else
{
findParent(e.parentNode,str);
}
}
</script>
<form>
<div>
<div>
<div>
<button id="myBtn">父节点</button>
<script type="text/javascript">
var myBtn=document.getElementById("myBtn");
myBtn.onclick=function(){
var oDiv=findParent(myBtn,"form");
alert(oDiv);
}
</script>
</div>
</div>
</div>
</form>
</body>
</html>
这是我之前写的一个js程序,用于查询一个dom的指定标签父节点。可是运行出错了。后来改写成:
<body>
<script type="text/javascript">
function findParent(e,str){
console.count("次数");
if(!e.parentNode){
return null;
}
else if(e.parentNode.nodeName.toLowerCase()==str)
{
return e.parentNode;
}
else
{
return findParent(e.parentNode,str);
}
}
</script>
<form>
<div>
<div>
<div>
<button id="myBtn">父节点</button>
<script type="text/javascript">
var myBtn=document.getElementById("myBtn");
myBtn.onclick=function(){
var oDiv=findParent(myBtn,"form");
alert(oDiv);
}
</script>
</div>
</div>
</div>
</form>
</body>
</html>
程序就运行成功了,这让我很郁闷,就是在递归函数中,采用了return返回一下。console.count()显示函数都是执行了四次,采用单步调试,运行步骤一模一样,监视e变量,变化情况也一样,我就纳闷了,加return和不加return的区别到底在哪里?
展开
 我来答
run_fan
2013-05-23
知道答主
回答量:17
采纳率:0%
帮助的人:17.3万
展开全部
你后加的return 是为了把递归的结果返回给调用的函数。也就是把 findParent(e.parentNode,str); 的结果返回给上层调用的 findParent 这样递归才有意义
百度网友a19d193
2013-05-22 · TA获得超过3446个赞
知道大有可为答主
回答量:1464
采纳率:100%
帮助的人:1447万
展开全部
亲,加不加return你的代码本身是没问题的,但是区别在于没有return的话你怎么拿到返回值呢。
以下是特征等效代码
function b() {
return 5;

}
function a() {
b();

}
alert(a());//肯定什么都没有啊,虽然b()执行了,就像你说的,怎么调试都是完全相同的过程,变成
function a() {
return b();

}
alert(a());//这时候你才能得到5啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式