개발기초

[자바스크립트] 클로저(Closure)에 대해서

Veams 2023. 4. 20.

간단히 말하면, 함수 내부에서 선언한 변수나 함수를 외부에서 참조할 때, 해당 변수나 함수를 클로저라고 합니다. 클로저는 함수 내부에서 생성된 변수를 계속해서 참조할 수 있는 특성을 가지고 있습니다. 다시 말해, 클로저는 내부 함수가 외부 함수의 변수에 접근할 수 있는 환경을 의미합니다. 

 

클로저는 다음과 같은 특징을 가집니다.

함수 내부에서 선언한 변수를 외부에서 참조할 수 있습니다.

  • 클로저를 반환하는 함수를 생성할 수 있습니다.
  • 클로저를 사용하면 함수의 실행 컨텍스트가 종료되어도 함수 내부의 변수를 계속해서 참조할 수 있습니다.
  • 데이터 은닉 : 클로저를 사용하면, 변수를 외부에서 직접 접근하는 것을 막고 함수를 통해서만 접근하게 할 수 있습니다. 이는 함수 내부의 변수를 안전하게 보호하면서도, 외부에서 변수를 참조할 수 있도록 해줍니다.

 

클로저 예시)

function createCounter() {
  let count = 0;

  return function() {
    count++;
    return count;
  }
}

const counter = createCounter();

console.log(counter()); // 1
console.log(counter()); // 2
console.log(counter()); // 3

위의 예시에서 createCounter 함수는 내부 함수를 반환합니다. 이 내부 함수는 count 변수에 접근할 수 있지만, 외부에서 직접 접근할 수 없습니다. 따라서 클로저를 사용하여 데이터 은닉과 상태 유지를 구현할 수 있습니다.

댓글