JavaScript

[JavaScript] 클로저

mhui123 2024. 1. 17. 10:24
반응형

클로저(Closure)는 함수와 해당 함수가 선언된 렉시컬 스코프(Lexical Scope) 사이의 관계를 나타내며,

함수가 정의될 때의 환경(스코프)을 기억하고, 함수가 호출될 때 그 환경을 사용할 수 있도록 하는 개념입니다.

 

주로 함수 내부에서 함수를 정의하고, 내부 함수가 외부 함수의 변수에 접근할 때 효과가 나타납니다.

이 성질을 통해 내부 함수로부터 외부함수의 변수에 접근할 수 있다.

 

function outerFunc(x){
    function innerFunc(y){
        return x + y;
    }
    return innerFunc;
}


let closure = outerFunc(10); //외부함수의 변수 x를 10으로 설정
let result = closure(5); //내부함수의 변수 y를 5로 설정

console.log(result); // 결과 : 15

closure = outerFunc(22);
result = closure(33);

console.log(result); // 결과 : 55

 

위 예제에서 closure란 변수명으로 outerFunc 함수의 x값을 설정하고

이 설정된 값을 내부함수를 통해 접근한 예제이다.

 

outerFunc의 x와 innerFunc의 y값은 오직 선언 당시에만 조작할 수 있는 모습을 알 수 있다.

이러한 클로저의 이러한 특성을 통해 함수 내부에서 선언된 값을 외부에서 접근할 수 없도록 통제하여 변수값의 임의변경으로부터 보호할 수 있다는 것을 알 수 있었다.

반응형