2017-01-16 1 views
-1

나는 간략한 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'로 반환하는 이유는 무엇입니까?

+0

findNum를 호출 다시 무엇을 얻을 return에있는

그래 나는 운동에 대한 몇 가지 답을 찾았지만 나는 단순히 도보로 해결할 수없는이 특정 문제 – CJ1138

+0

아무것도 해결하지를 볼 수 없었다 디버거에서 코드를 통해 무엇을하는지 봅니다. –

답변

-1

findNum 개체는 if 문과 일치하는 경우에만 값을 반환합니다. else 측면에서

, 그것은 findNum 재귀 를 호출하지만 다시 그 전화에서 얻을 반환 값을 무시합니다. 당신은 당신이 반복적으로

+0

완벽한, 감사합니다! – CJ1138

관련 문제