[javascript] 스코프 체인과 클로저

자바스크립트는 스코프 체인과 클로저라는 독특한 기능을 가지고 있습니다. 이러한 개념은 자바스크립트의 유연성과 강력함을 가능하게 합니다. 이번 포스트에서는 이러한 기능들에 대해 자세히 살펴보겠습니다.

스코프 체인

스코프(scope) 는 변수나 함수가 접근 가능한 범위를 가리킵니다. 자바스크립트는 코드가 실행될 때, 스코프 체인(scope chain)을 형성합니다. 이는 변수나 함수를 참조할 때 사용되며, 해당 변수나 함수가 정의된 위치에 따라 스코프가 결정됩니다.

예를 들어, 함수 내부에서 변수를 참조할 때, 우선 해당 함수 내부의 스코프를 검색하고, 없을 경우 부모 스코프로 이동하여 변수를 찾습니다. 이러한 과정을 통해 스코프 체인이 형성됩니다.

클로저

클로저(closure)는 함수와 그 함수가 선언된 렉시컬 환경의 조합입니다. 클로저는 이미 끝난 외부 함수의 변수를 사용할 수 있게 하며, 해당 외부 함수가 종료된 이후에도 변수에 접근할 수 있습니다.

클로저는 주로 콜백 함수비동기 작업에서 사용되는데, 외부 변수에 접근하여 값을 유지하거나 조작하는 데 유용합니다.

function outerFunction() {
  let outerVar = 'I am from the outer function';

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

  return innerFunction;
}

let myFunction = outerFunction();
myFunction(); // 'I am from the outer function' 출력

위 예제에서 innerFunctionouterVar 라는 외부 변수에 접근할 수 있으며, outerFunction이 종료된 이후에도 이 값을 유지할 수 있습니다.

마무리

스코프 체인과 클로저는 자바스크립트에서 강력한 기능을 제공합니다. 스코프 체인을 이해하면 변수의 유효 범위를 더 잘 이해할 수 있고, 클로저를 잘 활용하면 유연하고 강력한 코드를 작성할 수 있습니다.

이러한 개념들을 잘 숙지하고 활용한다면, 더 나은 자바스크립트 코드를 작성할 수 있을 것입니다.

참고 자료: MDN Web Docs