<script>
//var num = 0;
function testFnc(num){
num++;
document.write(num+"<br>");
if(num == 10) return;
testFnc(num);
document.write(num+"<br>");
}
testFnc(0);
</script>
10까지 갔다가 왜 역주하는지를 모르겠네요;;
자세히 설명해주세요...
답변 3개 / 댓글 8개
간단합니다. 재귀에서 빠져나오면서 그냥 찍히는겁니다
리턴 받을때까지 이프문 숫자만큼 재귀 할거잖아요?
리턴 받으면 그 함수 자체를 빠져나오게 되고, 그 빠져나온 함수를 콜했던 함수의 넘버가 차례대로 찍히는 것 뿐이라는거죠
예를 들어 10이 되면 함수를 빠져나오게 되고 num이 9였던 함수로 되돌아가게됩니다.
그리고 그 함수가 자연스레 끝나고, 앞서 있던 것들이 차례대로 끝나고 종료되는 것 일뿐입니다.
이해가 안되시면 댓글 남겨주세요. 좀 더 자세하게 설명드릴게요
답변에 대한 댓글 4개
즉, 이런 방식으로 작동한다고 보시면 될 듯...
1a
2a
3a.....
3b .....
2b
1b
마지막 라인 아래 코드 제거하면 역행은 않네요.
document.write(num+"<br>");
다만,
저게 어케 반복문처럼 구는지 그게 더 궁금..ㅎ
답변에 대한 댓글 4개
https://codepen.io/sinbi/pen/QWEEWKG
1+1=2 가 왜 2가 되냔 물음과 같은 시작점이 되지 않을까 싶습니다.
JS는 저렇게 자기 함수를 내부적으로 갖고 있는 경우,
반환 명령어 갖고 있기 전엔 양쪽 끝부터 처리해간다고 그냥 이해하시는 게 편할 듯 싶네요. ㅎ
미안해요. 만족스런 설명을 못 드려서..... ^^;
답변을 작성하려면 로그인이 필요합니다.