자바스크립트리턴값 자세한풀이부탁드립니다ㅠㅠ

안녕하세요
자바스크립트 초보이고 아직 여러문제를 이리저리 헤매고잇습니다ㅠㅠ 선배님들의 도움을받고싶어서 질문하나 부탁드리겠습니당
var n=0;
function k(n){
n++;
if(n==10){
return n;
}else{
return k(n);
}
}
console.log(k(n));
다음과 같은 식이 있는데
답은 일단 "10"입니다 .
여기서 제가 알고있는 범위로 풀이하자면 우선
var n=0;이라는아이는 전역변수이고
function k(n){
n++ //여기는 지역변수입니다.

n++이 되면서 n이 10이됬을때 값을 리턴하고 실행문이 종료가된다 여기까지 알고있습니다.
리턴문은 값을 되돌려주는걸로 알고잇는데
리턴값이 되돌려줄 함수는 console.log(k(n));
이 부분이져?
여기서 궁금한것은 if절에 n==10이됨과 동시에 저 식은 사라질건데 어떻게 10을 돌려줄수가있는지 궁금합니다.ㅜㅜㅜㅜ
감사합니다

질문에 이미 답이 나와 있는데요

n++이 되면서 n이 10이됬을때 값을 리턴하고 실행문이 종료

이 때 10을 리턴하고 종료되니 10인 것입니다.

식이 사라지는게 아니라 실행 컨텍스트에서 빠질 뿐입니다.

자바스크립트 엔진이 해당 코드를 읽으면서 일단 n이라는 변수와 k라는 함수를 저장하고, console.log(k(n)); 부분을 만나면 console.log 함수를 실행시킵니다.

그럼 console.log 함수의 인자로 들어온 k(n)을 실행시킬 것입니다. 말그대로 k 함수에 n을 인자로 넣어 실행시킵니다.

그럼 k함수에 n(이 경우에 0)을 넣은 반환값을 받고 그 반환값을 console.log함수에게 반환해줍니다.

그럼 console.log함수는 이 반환값을 콘솔에 찍어주고

코드는 종료됩니다.

  1. k, n를 메모리에 저장
  2. console.log 함수 실행
  3. (console.log 함수의 인자로 들어온) k함수 실행(인자 n)
  4. …(k함수의 구체적인 실행은 생략)…
  5. k 함수 실행 결과인 반환값(10)을 console.log 함수로 반환
  6. console.log 함수는 반환된 값을 출력
  7. 코드 종료