Post

JAVASCRIPT Lexical

1. 렉시컬 환경(Lexical Environment)이란?

▶ 렉시컬 환경은 변수와 함수의 스코프를 정의하는 개념적인 구조로, 코드가 작성된 위치(문맥)에서 변수와 함수가 어떻게 연결되고 접근되는지를 결정하는 중요한 요소입니다. 이유는 자바스크립트가 코드를 실행하기 전에 렉시컬 환경을 설정하여 각 변수와 함수의 유효 범위와 연결을 미리 결정하기 때문입니다.

2. 렉시컬 환경의 구성

▶ 렉시컬 환경은 두 가지 주요 구성 요소로 이루어져 있습니다.

  1. 환경 레코드(Environment Record)
    현재 스코프에 있는 식별자(변수, 함수 등)와 그 값을 저장합니다.
  2. 외부 렉시컬 환경 참조(Outer Lexical Environment Reference)
    외부(상위) 스코프에 대한 참조를 포함하여, 중첩된 스코프 체인을 형성합니다.

3. 렉시컬 환경의 생성

▶ 렉시컬 환경은 두 가지 주요 상황에서 생성됩니다.

  1. 전역 렉시컬 환경(Global Lexical Environment)
    자바스크립트 코드가 실행되기 시작할 때 생성됩니다. 전역 변수와 함수를 포함합니다.
  2. 함수 렉시컬 환경(Function Lexical Environment)
    함수가 호출될 때마다 생성됩니다. 함수 내에서 선언된 변수와 내부 함수를 포함합니다.

4. 렉시컬 환경의 동작

▶ 렉시컬 환경은 코드가 실행될 때마다 새로 생성되지 않고 특정 시점에 미리 설정되는데, 이 과정은 크게 두 단계로 나뉩니다.

  1. 변수 선언 단계
    코드가 실행되기 전에 자바스크립트 엔진은 변수와 함수 선언을 스캔하여 렉시컬 환경에 등록합니다. 이때 변수는 undefined로 초기화되며, 함수는 실제 함수 객체로 초기화됩니다.
  2. 코드 실행 단계
    선언된 변수와 함수가 실제로 초기화되고 값이 할당되며, 코드가 순차적으로 실행됩니다.

5. 렉시컬 환경의 중요성

  1. 렉시컬 환경은 자바스크립트의 스코프 체인(Scope Chain)을 이해하는 데 핵심적인 역할을 합니다.
    자바스크립트는 함수의 중첩 구조에 따라 스코프 체인을 형성하며, 각 함수는 자신의 렉시컬 환경과 상위 함수의 렉시컬 환경을 참조합니다.
  2. 변수의 유효 범위를 결정하고, 변수 충돌을 방지하며, 클로저와 같은 고급 기능을 지원합니다.
    렉시컬 환경을 잘 이해하면 자바스크립트의 변수 스코핑, 클로저, 블록 스코핑, 호이스팅 등의 개념을 명확히 파악할 수 있으며, 더 나아가 복잡한 자바스크립트 코드를 효과적으로 작성하고 디버깅하는 데 큰 도움이 됩니다.


이렇게 오늘은 JAVASCRIPT Lexical에 대해 알아봤는데요,
헷갈리기 쉬운 개념인만큼 면접에서도 충분히 나올 수 있는 질문이기 때문에 미리 공부해두면 좋을 것 같네요! 그렇다면 저는 다음에 또다른 면접에 대비한 내용을 들고오도록 하겠습니다 😁!

This post is licensed under CC BY 4.0 by the author.