스코프와 캡처링

스코프란 무엇인가요?

스코프(scope)는 변수와 함수의 유효 범위를 나타내는 개념입니다. 간단히 말해서, 어떤 식별자(identifier)가 어디에서 유효한지를 결정하는 것입니다. 스코프는 프로그램이 변수와 함수를 어떻게 참조하고 구분하는지를 정의합니다.

전역 스코프와 지역 스코프

전역 스코프(global scope)는 코드 전체에서 접근할 수 있는 범위를 의미합니다. 전역 스코프에 선언된 변수는 프로그램 어디에서든지 참조할 수 있습니다.

반면에 지역 스코프(local scope)는 특정 블록 안에서만 유효한 범위를 의미합니다. 함수 내부가 가장 일반적인 지역 스코프의 예입니다. 함수 내부에서 선언된 변수는 해당 함수 내에서만 사용할 수 있습니다.

캡처링이란 무엇인가요?

캡처링(capturing)은 클로저(closure) 개념과 관련된 개념으로, 함수가 정의될 때 함수 외부의 변수를 참조하는 것을 말합니다. 이렇게 캡처된 변수는 함수 내부에서 사용될 수 있으며, 함수가 호출될 때마다 그 값을 기억합니다.

캡처링은 자바스크립트에서 많이 사용되는 개념입니다. 예를 들어, 아래의 코드에서 count 변수가 increment 함수의 외부에서 정의되었지만, increment 함수 내에서 사용됩니다.

function increment() {
  let count = 0;   // count 변수 정의
  return function() {
    count++;   // count 변수 참조
    console.log(count);
  }
}

const counter = increment();   // increment 함수 실행
counter();   // 1
counter();   // 2

위의 예제에서 increment 함수는 내부 함수를 반환하는 클로저를 생성합니다. 이 때, 내부 함수에서 count 변수를 참조하므로 count 변수의 값은 함수가 호출될 때마다 유지되게 됩니다.

마무리

스코프와 캡처링은 자바스크립트에서 중요한 개념입니다. 스코프는 변수와 함수의 유효 범위를 정의하고, 캡처링은 클로저를 통해 함수 외부의 변수를 참조하는 것을 의미합니다. 이해하고 활용하면 자바스크립트 개발에서 효율적인 코드를 작성할 수 있습니다.

#javascript #스코프 #캡처링