JavaScript/3주차

9. outer

tnals634 2023. 5. 24. 17:05

1. LE - outer

 - 주요 용어

     - 1. 스코프

          - a. 식별자에 대한 유효범위를 의미

          - b. 대부분 언어에서 존재

 

     - 2. 스코프 체인

          - a. 식별자의 유효범위를 안에서부터 바깥으로 차례로 검색해 나가는 것

 

     - 3. outer

          - 스코프 체인이 가능토록 하는 것(외부 환경의 참조정보)

               외부 환경의 참조 정보라는 말에 집중

 

 

 

◎스코프체인

     1. outer는 현재 호출된 함수가 선언될 당시(중요!) 의 LE를 참조

     2. 예를 들어, A함수 내부에 B함수 선언 → B함수 내부에 C함수 선언(Linked List) 한 경우

     3. 결국 타고, 타고 올라가다 보면 전액 컨텍스트의 LE를 참조 하게 됨

     4. 항상 outer는 오직 자신이 선언된 시점의 LE를 참조, 가장 가까운 요소부터 차례대로 접근 가능

     5. 결론 : 무조건 스코프체인 상에서 가장 먼저 발견된 식별자에게만 접근 가능

//아래 코드를 직접 call stack을 그려가며 scope 관점에서 변수에 접근해보자.
var a = 1;
var outer = function () {
	var inner = function () {
    	console.log(a); // 이 값은 뭐가 나올지 예상해보자.
        var a = 3;
    };
    inner();
    console.log(a); // 이 값도 뭐가 나올지 예상해보자.
};
outer();
console.log(a); // 이값은 뭐가 나올지 예상해보자.

각각의 실행 컨텍스트는 LE 안에 record와 outer를 가지고 있고, outer 안에는 그 실행 컨텍스트가 선언될 당시의 LE정보가 다 들어있으니 scope chain에 의해 상위 컨텍스트의 record를 읽어 올 수 있다.※

▲outer 입장에서는 전역 컨텍스트