나는 간략한 JavaScript를 사용하고 있습니다.JavaScript에서 내부에서 외부로 함수가 돌아 오는 중 문제가 발생했습니다.
var list = {value: 10, rest: {value: 20, rest: {value: 30, rest: null}}};
볼과 저자의 솔루션을 이해 (그리고 내가 지금 실현하기 때문에 내가 실제로 'didn를했습니다 운동 중 하나는 형식으로, 목록에서 n 번째 값을 반환하는 재귀 함수를 작성하도록 요청 t 필요 내부 기능)하지만 난 내 코드가 작동하지 않는 이유에 대해 여전히 궁금 해요!
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'로 반환하는 이유는 무엇입니까?
findNum
를 호출 다시 무엇을 얻을return
에있는그래 나는 운동에 대한 몇 가지 답을 찾았지만 나는 단순히 도보로 해결할 수없는이 특정 문제 – CJ1138
아무것도 해결하지를 볼 수 없었다 디버거에서 코드를 통해 무엇을하는지 봅니다. –