[javascript] 클로저를 활용한 컨텍스트 전달

자바스크립트에서 클로저는 코드의 유효 범위를 정의하여 변수와 함수를 보호하는 데 사용됩니다. 클로저를 활용하면 함수가 선언된 시점의 유효 범위에 있는 변수에 접근할 수 있습니다. 이러한 특성을 활용하여 함수가 현재 컨텍스트에 의해 영향을 받지 않고 로컬 변수를 보존하면서 외부 컨텍스트와 상호 작용할 수 있습니다.

클로저의 개념

클로저는 함수와 그 함수가 선언된 렉시컬 범위를 함께 기억하는 기능을 가리킵니다. 이를 통해 함수는 자신이 선언된 렉시컬 범위 내의 변수에 접근할 수 있게 됩니다. 렉시컬 범위는 함수가 선언된 위치에 따라 정의되며, 이는 정적 유효 범위(static scope)를 의미합니다.

컨텍스트 전달을 위한 클로저 활용

클로저를 이용하여 함수가 다른 컨텍스트로 전달되면, 해당 함수는 클로저를 통해 원래 선언된 범위의 변수에 접근할 수 있습니다. 이를 통해 함수는 자신이 선언된 위치와는 별개의 컨텍스트에서도 동작할 수 있게 됩니다.

아래는 클로저를 사용하여 컨텍스트를 전달하는 간단한 예제입니다.

function createCounter() {
  let count = 0;
  return function() {
    return ++count;
  }
}

let counter1 = createCounter();
let counter2 = createCounter();

console.log(counter1()); // 1
console.log(counter1()); // 2
console.log(counter2()); // 1

위 예제에서 createCounter 함수는 클로저를 반환합니다. 이 클로저는 count 변수를 기억하고 있기 때문에 counter1counter2는 각자의 독립된 카운트를 유지할 수 있습니다.

결론

클로저를 활용하여 함수가 선언된 시점의 컨텍스트를 기억하고 접근할 수 있도록 함으로써, 함수의 동작을 컨텍스트에 독립적으로 만들 수 있습니다. 이는 함수형 프로그래밍과 상태 관리 등 많은 프로그래밍 패러다임에서 유용하게 활용될 수 있는데요.

클로저를 활용하여 컨텍스트 전달을 한다는 것은 함수의 동작을 독립적으로 유지하면서도 필요한 상태(변수)에 접근할 수 있게 하는 강력한 메커니즘이며, 이는 자바스크립트의 강력한 기능 중 하나로 여겨집니다.

참고 문헌: MDN Web Docs - Closures