본문 바로가기

Web/Frontend 기본 CS 정리

렉시컬 환경(Lexical Environment)에 대해 설명해주세요.

728x90

답변

렉시컬 환경은 코드가 실행될 때 변수를 저장하고 참조하는 구조를 나타내는 개념입니다.

자바스크립트에서 함수나 블록이 실행될 때마다 렉시컬 환경이 생성되고, 그 안에서 변수들이 어떻게 선언되고 참조되는지 정의됩니다.

 

개념 정리

스코프 개념 다시 잡기

스코프란, 변수나 함수의 유효 범위를 의미함

특정 변수나 함수를 어느 위치에서 참조할 수 있는지를 나타내며, 스코프에서 벗어난 위치에서 참조할 경우 Reference Error가 발생한다.

자바스크립트의 스코프는 크게 전역 스코프와 로컬 스코프로 나눌 수 있음

이 둘은 렉시컬 스코프 규칙에 따라 결정됨

→ 렉시컬 스코프 규칙 : 변수가 선언된 위치에 따라 접근 가능 범위가 결정됨

로컬 스코프

로컬 스코프는 다시 함수 스코프와 코드 블록 스코프로 나눌 수 있음

→ 이때 let과 const로 정의한 변수만 코드 블록 스코프를 가질 수 있음

렉시컬 스코프

변수가 어디에 정의되어 있는지에 따라 스코프가 결정되는 매커니즘

이는 코드가 작성된 위치에 따라 변수의 유효 범위가 결정된다는 뜻

따라서 다른 스코프에 있는 변수를 참조할 수 없음

자바스크립트에서 변수를 참조하는 과정

  • 자바스크립트는 함수가 실행될 때마다 메모리 상에 실행 컨텍스트를 생성함
  • 이때 전역 실행 컨텍스트는 앱이 실행되면 가장 먼저 생성됨

이 실행 컨텍스트 안에는 렉시컬 환경이 존재하는데, 여기에 현재 스코프에서 선언한 모든 변수와 함수들이 저장되어 있는 환경 레코드가 존재함

또한, 현재 환경에서 찾지 못한 변수를 상위 스코프에서 찾기 위해 상위 스코프를 가리키는 외부 렉시컬 환경 참조도 갖고 있음