有关递归函数的返回值问题 function invoke(){ var v = dataRecursion(ary,cons) ; alert(v); //结果居然为undefined } 你给invoke里用的函数传参了吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 function invoke(){ var v = dataRecursion(ary,cons) ; alert(v); //结果居然为undefined } invoke里,ary,cons根本就没有定义也没有值 传了。现在假定参数和逻辑都是正确的,正如我描述的,alert(ary[a])时是正确的,但返回给v后确是undefined 哦?代码基本上就是这样了。无非是再定义两个参数。我说过了,在递归函数中alert时是正确的,但返回给v后,alert(v)时却是undefined.我把dataRecursion (ary[a],cons);改成了return dataRecursion (ary[a],cons);还是一样的。。 很奇怪。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> </HEAD><script>function invoke(ary,cons){ var v = dataRecursion(ary,cons) ; alert(v); //结果居然为undefined } function dataRecursion (ary,cons) { for (var a in ary) { if(ary[a] instanceof Array) { dataRecursion (ary[a],cons); //在此递归调用 } else if (a == cons){ alert(ary[a]); //是有值的 return ary[a] ; //返回它 } } } var aa= new Array(5);for (i=0;i<8 ;i++ ){ aa[i]=100+i} invoke(aa,4);</script> <BODY> </BODY></HTML>你自己试一下. 不用试也看得出来,你这段代码是没有递归调用的,直接从else if语句块返回了 请分析或解释下当一个函数被递归调用后,再返回的时候,为什么返回的值是一个undefined? 请关心下递归函数,也请解释下递归函数中如何正确的返回值,特别是循环语句中递归调用时。不要总在看代码片段,说没有定义参数之类,我已经说过,假定参数都是正确的,并且函数也递归调用了,alert时值也是正确的,但返回后接收到的确实undefined,为什么? 请各位考虑清楚后再回复!谢谢。如能得到正确合理的解释和解决办法,本人承诺加分!! 你递归的时候没有返回值,function dataRecursion (ary,cons) { for (var a in ary) { if(ary[a] instanceof Array) { return dataRecursion (ary[a],cons); //在此递归调用 } else if (a == cons){ alert(ary[a]); //是有值的 return ary[a] ; //返回它 } } } 因为你没有返回递归的值,如果没有递归,能返回值,当执行到递归语句,这个函数就没有return语句了当然是undefined如果是在C#中,编译时就会报错了:不是每个路径都有返回值! 楼上可能说得不是很清楚,我今天也碰上这样的问题了,解决的办法是在调用自己里写上一个return 语句。如果你不写上return 语句的话,返回的结果当然是不可预知的,因为,你在每次调用自己里,执行的结果都会被忽略掉(没写return的话)。不知,大家听没白了没。 html浏览器的宽度问题~!!!!!!!!!!! js切换 请问length在utf-8中代表字符串中字符的个数吗??? 关于B页面传递值到A页面文本框的问题。 高分求解一个简单的setcookie函数 关于js建立一个table时候td td 之间有空格(有代码) 最后15分,怪事求助,谁能帮解决? 急!急!急!100分求救!!!关于代码替换的问题 如果用javascript实现对日期型和数字型的验证,请高手在线编出这两个function.谢谢! 如何指定表格一行的高度? JS高手--赠100分--有关选项卡的页面传值 正则表达式去HTML标签问题-被大于号绊住了
var v = dataRecursion(ary,cons) ;
alert(v); //结果居然为undefined
} invoke里,ary,cons根本就没有定义也没有值
我说过了,在递归函数中alert时是正确的,但返回给v后,alert(v)时却是undefined.
我把dataRecursion (ary[a],cons);改成了
return dataRecursion (ary[a],cons);还是一样的。。
很奇怪。
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<script>
function invoke(ary,cons){
var v = dataRecursion(ary,cons) ;
alert(v); //结果居然为undefined
} function dataRecursion (ary,cons) {
for (var a in ary) {
if(ary[a] instanceof Array) {
dataRecursion (ary[a],cons); //在此递归调用
} else if (a == cons){
alert(ary[a]); //是有值的
return ary[a] ; //返回它
}
} }
var aa= new Array(5);
for (i=0;i<8 ;i++ )
{
aa[i]=100+i
} invoke(aa,4);</script>
<BODY>
</BODY>
</HTML>你自己试一下.
请分析或解释下当一个函数被递归调用后,再返回的时候,为什么返回的值是一个undefined?
不要总在看代码片段,说没有定义参数之类,我已经说过,假定参数都是正确的,并且函数也递归调用了,alert时值也是正确的,但返回后接收到的确实undefined,为什么?
请各位考虑清楚后再回复!谢谢。如能得到正确合理的解释和解决办法,本人承诺加分!!
function dataRecursion (ary,cons) {
for (var a in ary) {
if(ary[a] instanceof Array) {
return dataRecursion (ary[a],cons); //在此递归调用
} else if (a == cons){
alert(ary[a]); //是有值的
return ary[a] ; //返回它
}
} }
当然是undefined如果是在C#中,编译时就会报错了:不是每个路径都有返回值!