JavaScript中从内部函数返回外部函数时出现问题
我正在阅读《雄辩的JavaScript》。其中一个练习要求您创建一个递归函数,该函数返回列表中的第n个值,格式如下:JavaScript中从内部函数返回外部函数时出现问题,javascript,function,recursion,return,Javascript,Function,Recursion,Return,我正在阅读《雄辩的JavaScript》。其中一个练习要求您创建一个递归函数,该函数返回列表中的第n个值,格式如下: var list = {value: 10, rest: {value: 20, rest: {value: 30, rest: null}}}; 我已经看过并理解了作者的解决方案(现在我意识到我实际上并不需要一个内部函数!),但我仍然很好奇为什么我的代码不起作用: function nth(list, num){ var count = 0; function
var list = {value: 10, rest: {value: 20, rest: {value: 30, rest: null}}};
我已经看过并理解了作者的解决方案(现在我意识到我实际上并不需要一个内部函数!),但我仍然很好奇为什么我的代码不起作用:
function nth(list, num){
var count = 0;
function findNum(node){
if(count == num){
var result = node.value;
console.log("From inner function: " + result);
return result;
}else {
node = node.rest;
count++
findNum(node);
}
}
var output = "From outer function: " + findNum(list);
return output;
}
我已经研究了答案,我似乎做了正确的事情从内部函数返回,但是当调用外部函数时,我得到了以下结果:
console.log(nth({value: 10, rest: {value: 20, rest: {value: 30, rest: null}}}, 0));
//From inner function: 10
//From outer function: 10
console.log(nth({value: 10, rest: {value: 20, rest: {value: 30, rest: null}}}, 1));
//From inner function: 20
//From outer function: undefined
console.log(nth({value: 10, rest: {value: 20, rest: {value: 30, rest: null}}}, 2));
//From inner function: 30
//From outer function: undefined
我的问题是:为什么外部函数在查找第一个值时按预期返回,而在其他两种情况下返回为“未定义”?
findNum
对象仅在if
语句匹配时才返回值
在else
端,它递归调用findNum
,但忽略从该调用返回的返回值
您必须
返回
递归调用findNum
返回的内容是的,我找到了一些关于这个练习的答案,但我看不到一个解决了这个特定问题的答案。没有什么不能通过简单地在调试器中浏览代码来解决的。