본문 바로가기

Web/Javascript

렉시컬 환경(Lexical Environment)

렉시컬 환경

- 함수가 사용할 함수, 변수를 렉시컬 환경에 설정

- 함수가 구조적, 독립적 환경에서 실행하기 위한 메커니즘 제공

- 초기화 단계에서 해석한

  - 모든 함수/변수를 {key:value} 형태로 저장

  - 함수/변수 이름을 key에 설정하고 값을 value에 설정

  - 따라서 함수/변수를 key로 식별할 수 있음


렉시컬 환경 구성

렉시컬 환경은

- function, with, try-catch에서 생성


렉시컬 환경 구성 형태

렉시컬 환경(LE) = {

    ... 환경 레코드(ER: Environment Record): {...},

    ... 외부 렉시컬 환경 참조(OLER: Outer Lexical Environment Reference): {...}

}

- 환경 레코드에 함수 안의 함수, 변수 기록

- 외부 렉시컬 환경 참조에 가장 근접한 스코프 기록

렉시컬 환경(LE) = {
    환경 레코드(ER: Environment Record): {
        sports: "농구",
        member: "5명"
    },
    외부 렉시컬 환경 참조(OLER: Outer Lexical Environment Reference): {
        play: function(){},
        values: [12, 34, 56]
    }
}


함수/변수 검색 방법

- 환경 레코드에서 검색, 없으면 외부 렉시컬 환경 참조에서 검색


소스 코드 작성 최적화 방법

- 되도록 1단계 안에 변수, 함수 작성

- 1단계 밖의 실행 환경이 스코프이며 외부 렉시컬 환경 참조에 설정되기 때문

'Web > Javascript' 카테고리의 다른 글

Object.assign()  (0) 2017.03.23
형 변환  (0) 2017.03.21
실행 콘텍스트  (0) 2017.03.14
클로저(closure)  (0) 2017.03.14
바인딩(Binding)  (0) 2017.03.14