본문 바로가기
문제와 해결/자바스크립트

리턴값이 함수일 때 주의점

by 리양 2021. 7. 6.

리턴값이 함수인 함수를 함수 선언문 방식으로 함수를 선언했더니 원하는 결과값이 나오지 않았다.

    
    function foo(){

        return function (){
            console.log("test");
        }
    }
    
    console.log(foo());

함수코드 자체가 출력된다.

 

하지만 foo 를 변수에 할당을 하고 foo를 할당한 변수를 호출하니 원하는대로 실행이 되었다.

    function foo(){

        return function (){
            console.log("test");
        }
    }
    
    
    // foo 를 변수 mar에 할당 후 mar 호출
    
    let mar = foo()
    mar();

이렇게 나오길 원했다.

 

 

그 이유는 return문은 함수에서 결괏값을 반환할 때 사용하는 것인데, 

foo()를 호출했을 때는

리턴안에 적힌 함수가 결과값이어서 함수 그대로를 반환한것이고,

다른 변수에 foo를 할당했을 때는

변수안에 리턴값 안에 있는 함수가 담기기 때문에 리턴안에 담긴 함수의 결과값이 반환이 된것이다.