TIL - 09. 함수와 return 키워드

박태환·2021년 7월 8일
0

Today I Learned

목록 보기
9/15
post-thumbnail

궁금점 발견

위 그림에서 이해가 안되는 점이 발견됐다.

console 창 첫째 줄의 '3, 김개발'은 어디서 나왔는가!

function consoleSuccess(month, name) {   
    console.log(month, name); 
  }  
  let result = consoleSuccess("3", "김개발"); 
  console.log("consoleSuccess 호출 값은" + result); 

궁금증을 해결하기 위해 밑에서 부터 한 줄씩 지워봤다.

function consoleSuccess(month, name) {   
    console.log(month, name); 
  }  
  let result = consoleSuccess("3", "김개발"); 

이렇게 했는데도 console창에서 '3, 김개발'이 찍혔다.

function은 함수를 정의하는 것이니 console창에 뜨지 않을테고, let도 변수를 선언하는 것일 뿐 console창에는 뜨지 않아야 하는 것이 아닌가 하는 의문이 들었다.

해결

정답은 바로 consolSuccess 함수를 정의하는 과정에서 나온 console.log였다.

일단 내가 생각한대로 첫줄의 consoleSucces 함수를 정의하는 과정에서는 아무것도 뜨지 않는다.

let result = consoleSuccess("3", "김개발");

이 부분에서 result에는 consoleSuccess("3", "김개발") 의 값이 담겨야 하는데 값이 담기려면 일단 함수를 실행시켜 값을 알아내야 한다.
여기서 consoleSuccess함수가 실행이 되고 그 과정에서 consoleSuccess함수 안에 담겨있던 console.log가 실행되는 것이다.
물론 consoleSuccess함수는 현재 return값이 정해져 있지 않기 때문에 resultundefined가 되겠지만 함수를 실행시키는 과정에 있던 console.log만 남는 것이다.

함수를 정의하는 과정에서 return이 없으면 return이 생략된 것이라고 하니 당연히 안에 남아있던 console.log(month, name)return값으로 나올 것이라고 생각했던 것이 문제의 원인이었던 것 같다.
return이 생략되어있다면 함수는 undefined를 반환한다! 기억할 것!

profile
mekemeke

0개의 댓글