더북(TheBook)

코드 closure.js

function makeCounterFunction(initVal) {
    var count = initVal;
    function Increase( ) {
        count++;
        console.log(count);
    }
    return Increase;
}

var counter1 = makeCounterFunction(0);
var counter2 = makeCounterFunction(10);

counter1( );
counter2( );


조금 독특한 코드죠? makeCounterFunction() 함수에서는 count 변수에 인자로 받은 값(initVal)을 저장하고 Increase()라는 함수를 선언합니다. 그리고 이 함수를 반환합니다.

그리고 이 함수를 두 번 호출해서 각각 counter1counter2 변수에 Increase() 함수가 저장되도록 한 다음 그 함수들을 호출했습니다.

어떻게 출력될까요? 브라우저에서 로드하면 다음과 같이 출력됩니다.


실행 결과

1
11
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.