JAVASCRIPT Lexical
1. 렉시컬 환경(Lexical Environment)이란?
▶ 렉시컬 환경은 변수와 함수의 스코프를 정의하는 개념적인 구조로, 코드가 작성된 위치(문맥)에서 변수와 함수가 어떻게 연결되고 접근되는지를 결정하는 중요한 요소입니다. 이유는 자바스크립트가 코드를 실행하기 전에 렉시컬 환경을 설정하여 각 변수와 함수의 유효 범위와 연결을 미리 결정하기 때문입니다.
2. 렉시컬 환경의 구성
▶ 렉시컬 환경은 두 가지 주요 구성 요소로 이루어져 있습니다.
- 환경 레코드(Environment Record)
- 현재 스코프에 있는 식별자(변수, 함수 등)와 그 값을 저장합니다.
- 외부 렉시컬 환경 참조(Outer Lexical Environment Reference)
- 외부(상위) 스코프에 대한 참조를 포함하여, 중첩된 스코프 체인을 형성합니다.
3. 렉시컬 환경의 생성
▶ 렉시컬 환경은 두 가지 주요 상황에서 생성됩니다.
- 전역 렉시컬 환경(Global Lexical Environment)
- 자바스크립트 코드가 실행되기 시작할 때 생성됩니다. 전역 변수와 함수를 포함합니다.
- 함수 렉시컬 환경(Function Lexical Environment)
- 함수가 호출될 때마다 생성됩니다. 함수 내에서 선언된 변수와 내부 함수를 포함합니다.
4. 렉시컬 환경의 동작
▶ 렉시컬 환경은 코드가 실행될 때마다 새로 생성되지 않고 특정 시점에 미리 설정되는데, 이 과정은 크게 두 단계로 나뉩니다.
- 변수 선언 단계
- 코드가 실행되기 전에 자바스크립트 엔진은 변수와 함수 선언을 스캔하여 렉시컬 환경에 등록합니다. 이때 변수는 undefined로 초기화되며, 함수는 실제 함수 객체로 초기화됩니다.
- 코드 실행 단계
- 선언된 변수와 함수가 실제로 초기화되고 값이 할당되며, 코드가 순차적으로 실행됩니다.
5. 렉시컬 환경의 중요성
- 렉시컬 환경은 자바스크립트의 스코프 체인(Scope Chain)을 이해하는 데 핵심적인 역할을 합니다.
- 자바스크립트는 함수의 중첩 구조에 따라 스코프 체인을 형성하며, 각 함수는 자신의 렉시컬 환경과 상위 함수의 렉시컬 환경을 참조합니다.
- 변수의 유효 범위를 결정하고, 변수 충돌을 방지하며, 클로저와 같은 고급 기능을 지원합니다.
- 렉시컬 환경을 잘 이해하면 자바스크립트의 변수 스코핑, 클로저, 블록 스코핑, 호이스팅 등의 개념을 명확히 파악할 수 있으며, 더 나아가 복잡한 자바스크립트 코드를 효과적으로 작성하고 디버깅하는 데 큰 도움이 됩니다.
이렇게 오늘은 JAVASCRIPT Lexical에 대해 알아봤는데요,
헷갈리기 쉬운 개념인만큼 면접에서도 충분히 나올 수 있는 질문이기 때문에 미리 공부해두면 좋을 것 같네요! 그렇다면 저는 다음에 또다른 면접에 대비한 내용을 들고오도록 하겠습니다 😁!
This post is licensed under CC BY 4.0 by the author.