본문 바로가기

학습 내용 정리/javascript

함수를 반환하는 함수

728x90

문제

아래의 코드에서 왜 X가 undefined 가 아닌지 모르겠다.

function createAdder (num){
    return function(x){
        return x + num;
    }
}

const addFive = createAdder(5);
console.log("addFive: " + addFive(10)); //15

시도

변수에 값을 할당하지 않고 5를 더해 본다. > NaN 

let con
console.log("con: " + con); //undefined

let five = con +5 
console.log( "five: " + five); //NaN

이해가 되지 않아 튜터 님께 질문함

> 튜터 님 : 스코프의 개념을 다시 공부해 보는 것도 좋을 것 같습니다

 

스코프의 개념을 공부하고 나서 한 생각

function(x)는 애초에 x가 비어 있는 값이 아니다.

createAdder(5)에서 5라는 값을 줬다. // 알고보니 x가 아니라 num에 준 것임.

> 튜터 님 : 자세히 설명 드리겠습니다 

 

해결

튜터 님 : 함수가 작동하는 원리를 순차적으로 설명해 주심

console.log(addFive) 를 같이 해 봄. // 함수를 리턴한다.

내가 이해한 내용 : 함수 안에 함수를 주고 num의 값 5와 x의 값 10을 주었기 때문에 undefined 가 나오지 않는다.

튜터 님 화면

알게 된 점

한 줄 한 줄 과정을 살피고 이해가 안 되는 부분은 console.log()로 찍어 보자.

변수를 선언하면 그 값의 타입이 뭔지 생각해 보자.