[function] return 다음 console.log 가 안되는 이유

김zunyange·2023년 1월 15일
0

JavaScript

목록 보기
16/17
post-thumbnail

return 을 왜 사용하는 걸까?

이전에 return 이 있는 함수를 공부했었는데, return 과 console.log가 다른 이유는 이해했다.

return : 함수의 output을 반환하는 결과물
console.log : 단순히 화면에 출력하기 위함

function sayHello2 () {
  let friend = "Diana Kim";
  
  return 'Return ' + friend;
}
console.log(sayHello2());

그런데 여기서 왜 console.log 를 함수 밖에 쓸까라는 생각을 못했다. 선생님이 저렇게 쓰니까 그냥 똑같이 쓴것 같은데.. 놓친건지 까먹은건지 친구랑 과제하다가 검색해보았다. 🫠

과제는 "함수의 인자로 이름을 받아서 이름의 길이를 반환하는 함수 getLengthOfName을 구현해주세요."

function getLengthOfName(name) {
  return name.length
}
getLengthOfName('김개발')

모범답안이 이건데 출력되는 값은 없다고 한다.
그래서 '3'이 나오는지 확인하려고
console.log 를 해보았는데 ...
console.log(name)
console.log(name.length)
console.log(getLengthOfName) 등등
그냥 다 넣어봤는데 오류뜨거나 '3' 이 나오지 않는다 ㅜㅜ

그래서

function getLengthOfName(name) {
  let whatthe = name.length
  return whatthe
}
getLengthOfName('김개발')
console.log(whatthe)

이렇게 작성해봤는데.. (console.log 위치는 다양하게 넣어봄) 계속 오류가 떴다.
그래서 결국 해결은 못하고 함수 강의 듣다가 return 뒤에 console.log 를 쓰면 안되는 이유만 찾아냈다. 이게 어디야! 몰랐다 ..

우선
함수 내에 return 은 함수 내부에서 함수 밖으로 데이터를 반환하는 것 뿐만 아니라 함수의 동작을 멈추는 역할을 해서 return 뒤에 작성되는 코드는 전혀 동작하지 않는다.
그래서 return 뒤에 console.log 를 쓰면 아무것도 출력되지 않는다.

이 사실을 친구한테 전했는데 "그럼 console.log 다음에 return 쓰면 되겠네?" 라 해서 엥? 싶었는데 정말 맞았다..

function getLengthOfName(name) {
  let whatthe = name.length;
  console.log(whatthe);
  return whatthe;
}
getLengthOfName('김개발'); // 3

선생님께서 작성한 코드 중에 function 안에 둘이 같이 있는 걸 본 적이 없는 것 .....
아니 그럼 모범답안에서 console.log만 추가해서 길이를 알 수는 없는게 맞나??

function getLengthOfName(name) {
  console.log(???)
  return name.length
}
getLengthOfName('김개발')

(이건 다시 물어보는 걸로 ..)



그리고 추가로 알게 된 것 !

function hello() {
  return
}
console.log(hello()); // undefined

return 뒤에 아무런 데이터를 작성하지 않으면, 암시적으로 return undefined 인 것과 동일하다. (return 을 안 써도 undefined)
cf) undefined 는 자바스크립트가 자동으로 데이터를 채우는 용도의 값이기 때문에 명시적이지 않고 암시적이다.

function plus(num) {
  return num + 1;
}
console.log(plus(2)); // 3
console.log(plus(7)); // 8
console.log(plus()); // NaN (undefined에서 더하기 1 은 숫자로 표현할 수 없기 때문)

후~ 함수, 변수 아이들이 제일 어려운것 같다 😣 그러고보니 선생님께서 function 안에 있는 것들은 밖에서 쓰지 말라했던 것 같기도 ...

profile
배움은 즐거워 ~(*ૂ❛ᴗ❛*ૂ)

0개의 댓글