-
자바스크립트 코드가 실행될 때의 환경을 나타내는 개념
-
현재 실행되고 있는 코드의 맥락 또는 환경에 대한 정보를 포함
-
자바스크립트 엔진이 스크립트를 어떻게 처리할지를 결정하는 데 중요한 역할
예시 코드
let globalVar = "전역";
function outer() {
let outerVar = "외부 함수";
function inner() {
let innerVar = "내부 함수";
console.log(innerVar);
console.log(outerVar);
console.log(globalVar);
}
inner();
}
outer();
- 해당 코드에선 전역 , outer함수, inner함수 라는 '범위'가 있음
- 여기서 코드를 순서대로 읽어나가면 먼저 globalVar와 outer 함수와 만남
- 전역 범위(프로그램의 가장 바깥쪽 범위)의 globalVar와 outer에는 어디서든 접근 가능함
- outer 함수 내부를 보면 outerVar와 inner 함수가 있음
- outer 함수가 외부에서 호출되면 해당 함수의 실행 컨텍스트가 생성되며 호출 스택에 푸쉬됨, 이 컨텍스트에는 outerVar변수와 inner 함수가 포함됨
- inner 함수 내부를 보면 innerVar와 outerVar, globarVar를 모두 호출하는데 inner 함수는 자신의 실행 컨텍스트, outer 함수의 실행 컨텍스트, 전역 실행 컨텍스트의 변수에 모두 접근이 가능하므로 출력 가능함(스코프 체인, inner함수의 렉시컬 환경은 outer 함수의 렉시컬 환경을 참조함, outer 함수는 전역 렉시컬 환경을 참조함)