brunch

You can make anything
by writing

C.S.Lewis

by 별똥별 shooting star Sep 14. 2023

자바스크립트, 스코프 체인에 대해 알아보기

출퇴근길에 공부하는 자바스크립트1

들어가며

스코프는 코드에서 변수나 함수를 안전하게 참조할 수 있는 영역을 말한다. 스코프는 코드의 구조와 실행 컨텍스트에 의해 결정되며, 중요한 특징 중 하나는 스코프 체인이다. 이 포스트에서는 스코프 체인의 개념과 식별자 검색 방식을 자세히 알아보도록 하겠다.



1. 스코프 체인이란?

함수는 전역 또는 다른 함수 내부에서 정의될 수 있이다. 이를 '함수의 중첩'이라고 한다. 함수가 중첩될 때, 각 함수는 자신만의 지역 스코프를 갖는다. 스코프 체인은 이러한 지역 스코프들이 계층적으로 연결된 것을 의미한다.


스코프 체인을 이해하는 가장 간단한 방법은 '함수의 계층적 구조'라고 생각하는 것이다. 예를 들어, 외부 함수 내부에 중첩 함수가 있으면 중첩 함수의 스코프는 외부 함수의 스코프를 상위 스코프로 갖게 된다.



2. 스코프 체인에 의한 식별자 검색

스코프 체인은 식별자(변수, 함수 등의 이름) 검색을 위한 메커니즘이기도 하다. 코드에서 식별자를 참조할 때, 자바스크립트 엔진은 현재 스코프에서 시작하여 식별자를 찾는다. 만약 찾지 못하면 상위 스코프로 이동하여 검색을 계속한다. 이 과정은 전역 스코프에 도달할 때까지 반복된다.


이처럼 상위 스코프의 식별자는 하위 스코프에서 참조할 수 있지만, 반대로 하위 스코프의 식별자를 상위 스코프에서 참조하는 것은 불가능하다.



3. 함수와 스코프 체인

자바스크립트에서 함수는 객체이며, 함수 이름은 그 함수 객체를 가리키는 식별자이다. 함수를 호출할 때, 자바스크립트 엔진은 함수의 식별자를 스코프 체인을 따라 검색한다.


이렇게 함수도 식별자에 할당되므로 스코프의 개념이 적용된다. 실제로 함수와 일반 변수 사이에 큰 차이는 없다. 다만, 함수는 객체로써 호출 가능한 특성을 가지고 있을 뿐이다.



마치며

스코프 체인은 자바스크립트에서 변수와 함수를 참조하는 규칙을 정의한다. 이를 통해 코드의 안정성과 예측 가능성이 보장이 된다. 코드를 작성할 때 이러한 개념을 정확히 이해하고 있으면, 버그 발생 확률을 줄이고 효율적인 코드를 작성할 수 있다.

매거진의 이전글 자바스크립트, 전역 스코프와 지역 스코프란 무엇인가?
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari