본문 바로가기

자바스크립트/클로저

자바스크립트 클로저 예제 - 한 번만 호출할 수 있는 함수

function once(func) {

    // 여기에 func 변수가 있다고 의식해야 쉽다.

    let alreadyCalled = false;

    let result;

    // 이상의 func, alreadyCalled, result 변수는 

    // 아래의 add 변수에 클로저로 남는다. 

    return function() {

        if(!alreadyCalled) {

            alreadyCalled = true;

            result = func.apply(null, arguments); // func 변수에 담긴 함수를 호출한다.

        }  

        return result;

    }

}

 

let add = once(function(a, b) {

    return a + b;

});

 

add(1, 2); // 3

add(3, 4); // 3

add(5, 6); // 3