[javascript] 클로저 개념 이해하기

자바스크립트에서 클로저(closure)는 매우 중요한 개념입니다. 클로저란 함수와 그 함수가 선언된 렉시컬 환경(lexical environment)간의 조합입니다. 이는 함수가 선언될 당시에 존재하던 로컬 변수를 기억하고, 함수가 외부에서 선언된 변수에 접근할 수 있도록 합니다.

클로저를 사용하면 외부 함수의 변수를 내부 함수에서 사용하거나, 외부 함수 내의 변수 값을 유지할 수 있습니다. 이는 함수형 프로그래밍에서 매우 유용하며, 데이터 은폐(encapsulation)정보은닉(information hiding)을 가능하게 합니다.

클로저의 예시

다음은 간단한 클로저의 예시입니다.

function outerFunction() {
  let outerVariable = 'I am outer';

  function innerFunction() {
    console.log(outerVariable);
  }

  return innerFunction;
}

const newFunction = outerFunction();
newFunction(); // 'I am outer'

위의 예시에서 innerFunction은 외부 함수인 outerFunction의 로컬 변수인 outerVariable에 접근합니다. 이때 outerVariable은 클로저에 의해 보존됩니다.

클로저를 이해하는 것은 자바스크립트에서 고급 기능을 활용하는 데 매우 중요합니다. 클로저를 사용하면 다양한 디자인 패턴을 구현할 수 있고, 코드의 효율성을 높일 수 있습니다.

더 자세한 내용은 MDN web docs에서 확인할 수 있습니다.