Dev/notion

Closure - 클로저

괴발짜응 2025. 2. 19. 14:12
반응형

클로저(Closure)는 함수와 그 함수가 선언될 때의 렉시컬 환경을 함께 기억하는 기능을 말한다. 

다시 말해, 자신이 생성될 당시의 변수 환경에 대한 접근 권한을 유지하는 함수를 의미한다.

 

주요 개념

1. 렉시컬 스코프 (Lexical Scope) : 

  • 함수가 선언될 때, 주변의 변수들에 대한 참조를 함께 기억한다.
  • 함수가 실행될 때, 이 변수들에 접근할 수 있다.

2. 함수와 환경의 결합  

  • 클로저는 단순히 함수를 반환하는 것이 아니라, 그 함수가 생성될 당시의 환경(변수들)을 함께 저장한다.
  • 이 때문에 외부 함수가 종료된 후에도 내부 함수가 외부 변수에 접근할 수 있다.

3. 은닉화 및 상태 유지

  • 클로저를 사용하면 외부에서 직접 접근할 수 없는 개인 변수(private variable)를 만들 수 있다.
  • 클로저는 상태를 기억하고, 다음 호출 시 그 상태를 활용할 수 있도록 한다.

JavaScirpt Example

function createCounter() {
    let count = 0;
    
    // 클로저: 내부 함수가 외부 변수 `count`를 참조함
    return funcion() {
        count += 1;
        return count;
    };
}

const counter = createCounter();

console.log(counter()); // 출력: 1
console.log(counter()); // 출력: 2
console.log(counter()); // 출력: 3
반응형