JavaScript에서 함수의 렉시컬 환경
함수에게 접근 가능한 모든 외부 변수는 그 함수의 렉시컬 환경 (LexicalEnvironment)이라고 불립니다.
다음 예에서 함수는 두 변수,
num1과 num2에 접근할 수 있으며,
이들이 우리 함수의 렉시컬 환경을 구성합니다:
let num1 = 1;
let num2 = 2;
function func() {
// 함수는 변수 num1과 num2를 압니다
}
렉시컬 환경 자체는 우리 함수에 연결된 JavaScript의 어떤 내부 객체입니다. 이 경우 다음과 같이 표현할 수 있습니다:
{num1: 1, num2: 2}
렉시컬 환경 내 어떤 변수의 값도 항상 해당 변수의 현재 값과 같습니다:
let num1 = 1; // 환경 {num1: 1}
let num2 = 2; // 환경 {num1: 1, num2: 2}
// 변수 num1을 변경해 봅시다:
num1 = 123; // 환경 {num1: 123, num2: 2}
function func() {
}
함수 내부에서 어떤 변수에 접근하려고 할 때, 그 변수는 먼저 함수의 지역 변수 중에서 검색되고, 그런 변수가 거기에 없으면 함수의 렉시컬 환경에서 검색됩니다.