我正在通過Eloquent JavaScript這本書。其中一個練習要求你創建一個列表中返回第n個值的遞歸功能,格式爲:在JavaScript中從內部函數返回外部函數的問題
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;
}
我已經研究了答案here,我似乎做正確的事返回從內部函數中,但是當調用外部函數時,我得到以下結果:
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
我的問題是:爲什麼在尋找第一個值時,外部函數返回了預期的結果,而在另外兩種情況下返回'undefined'?
得到的是什麼呀,我發現關於鍛鍊的幾個答案,但我看不出一個解決這方面的問題 – CJ1138
沒有什麼,不能簡單地走來解決通過調試器中的代碼觀察它的功能。 – 2017-01-16 12:06:02