[javascript] 함수 내부에서 전역 변수를 감추는 방법

Javascript에서 함수 내부에서 전역 변수를 감추는 방법은 모듈 패턴(Module Pattern)을 사용하는 것입니다. 모듈 패턴은 프라이빗(private) 변수와 메소드를 생성하여 전역 공간과 격리시킴으로써, 다른 코드와 충돌을 방지하고 변수의 직접 접근을 제한할 수 있습니다.

(function() {
    var privateVariable = 'private'; // 프라이빗 변수

    function privateFunction() { // 프라이빗 메소드
        console.log('This is a private function');
    }

    // 외부에 노출시키고 싶은 변수 및 메소드
    var publicAPI = {
        publicVariable: 'public', // 퍼블릭 변수
        publicFunction: function() { // 퍼블릭 메소드
            console.log('This is a public function');
        }
    };

    // 모듈을 외부로 반환
    return publicAPI;
})();

console.log(publicVariable); // ReferenceError: publicVariable is not defined
console.log(publicFunction()); // ReferenceError: publicFunction is not defined

위의 예제에서는 즉시 실행 함수(IIFE - Immediately Invoked Function Expression)를 사용하여 함수 내부에서 모듈을 정의하고, publicAPI 객체를 외부로 반환하도록 하였습니다. 이렇게 하면 모듈 내부의 privateVariable 변수와 privateFunction 메소드는 외부에서 접근할 수 없습니다. 대신, publicAPI 객체에 포함된 publicVariable 변수와 publicFunction 메소드만 외부에서 접근할 수 있습니다. 이를 통해 변수와 메소드의 은닉화와 보호가 가능해집니다.

모듈 패턴은 전역 변수를 사용하는 것을 최소화하고, 코드의 모듈화 및 재사용성을 높이는데 매우 유용합니다. 또한, 다른 개발자와의 협업 시 충돌을 방지하고 코드의 안정성을 향상시킬 수 있습니다.

참고 자료