스코프 체인(Scope Chain)은 자바스크립트에서 변수 및 함수 식별자를 검색하는 메커니즘입니다. 스코프 체인은 함수의 렉시컬 스코프(lexical scope)와 관련이 있으며, 변수와 함수 식별자의 유효 범위를 결정합니다. 스코프 체인의 동작 방식과 활용 방법을 살펴보겠습니다.
-
스코프와 렉시컬 스코프:
- 스코프는 변수와 함수의 유효 범위를 정의하는 개념입니다. 변수와 함수가 접근 가능한 영역을 의미합니다.
- 렉시컬 스코프는 코드가 작성된 위치에 따라 변수와 함수의 스코프가 결정되는 개념입니다.
- 함수가 정의된 위치에서부터 상위 스코프를 차례로 올라가며 스코프 체인을 형성합니다.
-
스코프 체인의 구성:
- 스코프 체인은 여러 개의 스코프 객체(scope object)로 구성됩니다.
- 각 스코프 객체는 해당 스코프에서 정의된 변수와 함수 식별자를 포함합니다.
- 스코프 체인의 첫 번째 객체는 현재 실행 중인 함수의 변수 객체(activation object)입니다.
- 첫 번째 객체 이후의 객체는 상위 스코프의 변수 객체를 차례로 참조합니다.
- 최상위 객체는 전역 객체(Global Object)입니다.
-
스코프 체인의 탐색:
- 변수나 함수 식별자를 사용할 때, 스코프 체인을 따라 상위 스코프로 탐색하여 해당 식별자를 찾습니다.
- 탐색은 스코프 체인의 첫 번째 객체부터 시작하여 상위 객체로 이동하며 진행됩니다.
- 식별자가 발견되면 탐색을 멈추고 해당 식별자에 대한 값을 반환합니다.
- 만약 스코프 체인 전체를 탐색하였음에도 식별자를 찾지 못하면, 정의되지 않은 변수로 판단됩니다.
스코프 체인을 시각적으로 표현하면 다음과 같습니다:
[현재 실행 중인 함수의 변수 객체] -> [상위 스코프의 변수 객체] -> ... -> [전역 객체]
스코프 체인을 통해 변수와 함수 식별자의 유효 범위가 결정되며, 해당 식별자에 접근할 수 있습니다. 스코프 체인은 변수의 유효 범위 충돌을 방지하고, 코드의 모듈성과 재사용성을 높이는데 도움을 줍니다.