JavaScript - 실행 컨텍스트와 렉시컬 환경

김서영·2024년 2월 13일
0

실행 컨텍스트


함수의 실행, 호이스팅, 렉시컬 환경, 클로저 등의 개념들을 관통하는 하나의 큰 개념

현재 실행중인 코드에 대한 세부 정보를 담고있는 데이터 구조

전역 실행 컨텍스트

스크립트가 처음 실행될 때 생성되는 실행 컨텍스트

  • 전역 변수와 함수는전역 실행 컨텍스트 안에서 정의되고, 전역 실행 컨텍스트는 코드 실행이 끝날 때까지 유지됨

함수 실행 컨텍스트

함수가 호출될 때마다 생성되는 실행 컨텍스트

  • 각 함수 실행에 대해 별도의 실행 컨텍스트가 생성되고, 함수 내에서 선언된 변수와 함수, 매개변수 등을 포함
  • 함수 실행이 완료되면 해당 실행 컨텍스트는 제거

Eval 함수 실행 컨텍스트

eval() 함수가 실행될 때 생성되는 실행 컨텍스트

각 실행 컨텍스트는 자신만의 변수 객체, 스코프 체인, this 등을 가지고 있음
=> 코드의 실행과 관련된 정보를 관리하고, 변수 및 함수의 검색에 사용

실행 컨텍스트는 스택 구조로 관리되며, 코드 실행 중에 새로운 실행 컨텍스트가 생성되면 스택의 맨 위에 쌓임!
함수 실행이 완료되면 해당 실행 컨텍스트가 스택에서 제거되고 이전 실행 컨텍스트로 되돌아감!

렉시컬 환경


실행 컨텍스트에서 변수와 함수의 식별자를 관리하고 스코프를 결정하는데 사용되는 구조

변수, 함수, 매개변수 등의 식별자와 그들이 가리키는 값들의 연결을 저장하고 관리

렉시컬 환경은 크게 2가지 요소로 구성된다.

환경 레코드

실제 식별자와 그에 해당하는 값을 저장하는 영역

  • 전역 환경의 경우, 전역객체와 관련된 정보가 포함됨
  • 함수 실행 컨텍스트의 경우, 함수의 매개변수, 지역변수 등이 포함됨

외부 렉시컬 환경 참조

현재 실행 컨텍스트와 관련된 외부 렉시컬 환경의 참조를 가리킴

  • 스코프 체인을 형성하는데 사용

렉시컬 환경은 함수의 스코프, 변수의 유효 범위, 클로저 등과 관련된 핵심 개념!
함수가 선언된 위치에 따라 스코프가 결정되므로, 렉시컬 환경은 함수의 렉시컬 스코프를 정의하는 데 중요한 역할을 한다!

렉시컬 환경은 실행 컨텍스트 내부에 생성되며, 실행 컨텍스트의 일부로서 관리된다.
각 실행 컨텍스트는 자신만의 렉시컬 환경을 가지며, 스코프 체인을 통해 외부 렉시컬 환경에 접근할 수 있다.

profile
개발과 지식의 성장을 즐기는 개발자

0개의 댓글

관련 채용 정보