- 자바스크립트 뿐 아니라, 많은 프로그래밍 언어들은 스코프의 개념을 아주 많이 활용하고 있어요.
- 우리는 프로그래밍 언어의 세계에서의 스코프가 기본적으로 변수에 접근할 수 있는 범위라는 개념을 내포하고 있음을 알고 넘어갈 필요가 있어요.
- 이번 주제에서는 어렵지 않은 내용을 간단하게 설명하고 넘어갈게요!
- 스코프란, 식별자를 찾아내기 위한 규칙으로 사용되며, 변수에 접근할 수 있는 범위를 의미해요.
- 자바스크립트에서의 스코프는 참조 범위에 따라, 아래와 같이 2가지로 분류할 수 있어요.
먼저, 코드 어디서나 참조할 수 있는 전역 스코프라는 것이 있어요. 전역 스코프에 있는 변수는 코드 어디서나 참조할 수 있어요.
다음으로, 함수 선언 시 만들어지는 블록 내의 스코프로, 함수 자신과 함수 몸체 내에 선언된 하위 함수에서만 참조할 수 있는 지역 스코프라는 것도 있어요.

var 키워드로 선언된 변수는 재선언이 가능하며, 함수 레벨의 스코프를 따라요.
함수 레벨 스코프란 함수 코드 블록 내에서 선언된 변수는 함수 코드 블록 내에서만 유효하고 함수 외부에서는 유효하지 않은 스코프를 의미해요.
다음 이미지 예제의 코드와 주석 부분을 잘 확인해보시면 이해가 쉬울 거에요.


let, const 키워드로 선언된 변수는 재선언이 불가능하며, 블록 레벨의 스코프를 따라요.
블록 레벨 스코프란 코드 블록 내에서 유효한 스코프를 의미해요. 즉, 이름이 같은 블록 내부의 식별자와 외부의 식별자는 독립적인 관계를 유지한다는 뜻이에요.
다음 이미지 예제의 코드와 주석 부분을 잘 확인해보시면 이해가 쉬울 거에요.

자바스크립트 엔진은 식별자를 찾을 때 우선, 일단 자신이 속한 스코프에서 찾아요.
이 때, 해당 스코프에 식별자가 없으면, 해당 스코프를 포함하는 상위 스코프로 이동해 식별자를 찾아나가요.
이렇게 연속적으로 연결고리를 타면서 식별자를 찾아나가는 과정을 스코프 체인이라고 해요.
다음 이미지 예제의 코드와 주석 부분을 잘 확인해보시면 이해가 쉬울 거에요.
