개발

js outerEnvironmentReference

explosion149 2024. 11. 6.

렉시컬 환경(lexical environment)은 JavaScript에서 변수와 함수의 스코프를 관리하는 구조입니다. 

이는 코드가 작성된 위치에 따라 변수와 함수에 대한 접근을 결정하는 중요한 개념입니다.

 

환경 레코드 (Environment Record): 현재 실행 컨텍스트에서 정의된 변수와 함수에 대한 정보를 저장합니다. 

이 레코드는 변수의 이름과 값, 함수의 정의 등을 포함합니다.

outerEnvironmentReference: 현재 렉시컬 환경의 외부 환경을 참조합니다. 

즉, 현재 스코프에서 접근할 수 없는 변수나 함수가 정의된 상위 스코프를 가리킵니다. 

이를 통해 JavaScript는 스코프 체계를 유지하고, 

중첩된 함수가 외부 함수의 변수에 접근할 수 있도록 합니다.

렉시컬 환경은 함수가 정의된 위치에 따라 결정됩니다. 

예를 들어, 함수가 중첩되어 있을 때, 내부 함수는 외부 함수의 렉시컬 환경에 접근할 수 있습니다. 

이는 클로저의 개념과 밀접하게 관련되어 있습니다.

 

function outerFunction() {
    let outerVariable = 'I am from outer scope';

    function innerFunction() {
        console.log(outerVariable); // outerVariable에 접근
    }

    return innerFunction;
}

const inner = outerFunction();
inner(); // "I am from outer scope"

위의 코드에서 innerFunction은 outerFunction의 렉시컬 환경을 기억하고 있으며, 

outerVariable에 접근할 수 있습니다. 

이때 innerFunction의 outerEnvironmentReference는 

outerFunction의 렉시컬 환경을 가리키고 있습니다.

 

렉시컬 환경은 변수와 함수의 스코프를 관리하는 구조입니다.
환경 레코드와 outerEnvironmentReference로 구성되어 있습니다.
중첩 함수가 외부 함수의 변수에 접근할 수 있도록 하여 클로저를 가능하게 합니다.

 

 

클로저는 함수가 자신이 정의된 렉시컬 환경을 기억하는 기능입니다. 

클로저가 생성될 때, 해당 함수는 outerEnvironmentReference를 통해 외부 스코프의 변수에 접근할 수 있습니다. 

이로 인해 클로저는 외부 함수의 변수에 접근할 수 있으며, 

이는 데이터 은닉 및 상태 유지에 유용합니다.

'개발' 카테고리의 다른 글

호이스팅  (0) 2024.11.06
js 상황에 따라 달라지는 this  (2) 2024.11.06
js record와 호이스팅  (0) 2024.11.06
js 실행 컨텍스트 와 콜 스택  (1) 2024.11.06
js null 과 undefined  (0) 2024.11.06

댓글

💲 추천 글