처음 자바스크립트를 접할 때 리턴문이랑 console.log를 헷갈려 하는 경우가 있다.
몇 가지 상황을 보면서 둘 차이를 명확히 체크해보자
return 과 console.log 차이
아래 코드에 두 개의 함수가 정의되어 있는데
printSquare 함수는 파라미터 x의 제곱을 콘솔에 출력하는 함수이고
getSquare 함수는 파라미터x를 제곱해서 리턴해주는 함수이다.
function printSquare(x) {
console.log(x * x);
}
function getSquare(x) {
return x * x
}
각 함수들을 호출해보자
printSquare(3)
▲ printSquare 함수의 숫자 3이 파라미터 x에 전달하여 x * x 는 3 * 3이 되어 최종 출력 값은 9이다.
getSquare(3)
▲ getSquare 함수의 숫자 3이 파라미터 x에 전달하여 리턴 x * x 가 리턴 3 * 3이 되어 최종 출력 값은 9이다.
그런데 함수 호출 부분이 9로 대체되기만 했지 그 다음 동작에 대해서 작성된 코드가 없다.
프로그램을 그대로 종료되며 실행해보면 아무것도 출력이 되지 않는 것을 확인 할 수 있다.
한번 getSquare에 console.log를 감싸주면 어떻게 될까?
console.log(getSquare(3));
▲ 방금 getSquare(3)은 9가 된다는걸 확인 했으니 결국 이 코드는 console.log(9)가 된다는 말이다.
실행해보면 9가 출력이 된 것을 확인할 수 있다.
만약 getSquare가아니라 printSquare를 하게되면 어떻게 될까?
console.log(printSquare(3));
▲ 처음에 printSquare(3)을 하게되면 콘솔에 9를 출력하고 종료가 됐었다.
그런데 이번에는 printSquare를 실행하고 또 console.log 함수도 실행해야한다.
printSquare 함수에는 리턴문이 작성되어 있지 않는데 이렇게 리턴문이 없는 함수를 실행하면
함수 호출 부분은 undefined 값 (=처음부터 아무것도 할당하지 않았다는 걸 알려주는 값) 을 리턴 받게 된다.
실행해보면 9와 undefined 값이 출력 되는 것을 볼 수있다.
9는 console.log(3 * 3)의 결과이고 undefined는 console.log(printSquare(3)) 의 리턴 값을 출력한 결과이다.
즉 함수를 선언 할 때 리턴문을 따로 작성하지 않으면 undefined 값을 리턴한다는 점을 기억하자.
결론은 리턴은 함수를 실행하고 어떤 값을 돌려주는 것이고
console.log는 콘솔에 어떤 것을 출력해 주는 함수이다.
명확히 구분하여 사용하자.
★ GitHub 주소 ( return 과 console.log 차이 )
★ notion 예시 문제 풀이
https://www.notion.so/10ae9530b3e180489ac7e56a0c9d1664?pvs=4
'JS' 카테고리의 다른 글
(15) JavaScript - 추상화 / 스코프(Scope) (0) | 2024.09.23 |
---|---|
(14) JavaScript - 추상화 / 옵셔널 파라미터(optional parameter) (0) | 2024.09.23 |
(12) JavaScript - 추상화 / return문의 함수 실행 중단 (0) | 2024.09.23 |
(11) JavaScript - 추상화 / 함수의 실행 순서 (0) | 2024.09.23 |
(10) JavaScript - 추상화 / 할당 연산자 (Assignment Operators) (0) | 2024.09.20 |