실행컨텍스트와 렉시컬 환경
실행 컨텍스트(Execution Context)와 렉시컬 환경(Lexical Environment)은 자바스크립트 엔진이 코드를 실행하는 방법을 이해하는 데 중요한 개념입니다.
실행 컨텍스트 : 현재 실행되는 코드의 환경을 나타내며,
전역코드가 실행되는 전역컨텍스트 함수 내부 코드가 실행되는 함수 컨텍스트로 나뉠 수 있습니다.
- 전역 컨텍스트
- 전역 컨텍스트는 코드가 실행되는 동안 계속 유지되며, 코드 실행이 종료될 때까지 사라지지 않습니다.
- 전역 변수와 함수를 포함
- 함수 컨텍스트
- 함수 컨텍스트는 각각의 함수 호출에 대해 별도로 생성되며, 함수가 실행을 완료하고 반환하면, 해당 함수 컨텍스트는 메모리에서 제거됩니다(단, 클로저에 의해 참조되는 경우는 제외).
- 함수의 매개변수, 로컬 변수, 내부 함수 등이 저장
실행컨텍스트의 구성 요소
- 변수환경
- 변수 환경은 실행 컨텍스트가 생성될 때 한 번 설정되며, 이후에는 변경되지 않습니다. 따라서 var로 선언된 변수와 함수 선언이 해당됩니다.
- 렉시컬환경
- 환경레코드
- 현재 컨텍스트의 로컬 변수와 함수, 매개변수 등의 식별자 정보를 저장 ( *환경 레코드는 실행 중에 변경될 수 있습니다. 이는 let, const로 선언된 변수와 클래스 선언이 블록 스코프를 가지고 있기 때문 )
- 외부 렉시컬 환경에 대한 참조
- 환경레코드
- this바인딩
렉시컬환경 ( ~= 현재 스코프의 변수와 외부 스코프를 참조하는 환경 )
*환경레코드와 외부 렉시컬 환경에 대한 참조
- 환경레코드: 현재 실행 컨텍스트 내의 식별자와 그 식별자에 바인딩된 값을 저장하는 저장소 ( 변수 이름과 그 값 )
- 외부렉시컬 환경에 대한 참조: 현재 렉시컬 환경이 참조하는 상위 스코프의 렉시컬 환경 ( 상위 렉시컬 환경 )
( * Lexical scoping : 함수나 블록의 스코프가 선언된 위치에 따라 결정되는 것을 의미 )
'Javascript' 카테고리의 다른 글
프로세스&스레드 , 이벤트루프 (0) | 2023.12.10 |
---|---|
일급함수와 클로저(Closure) (0) | 2023.12.10 |
Hoisting (0) | 2023.12.10 |
실행컨텍스트와 렉시컬 환경
실행 컨텍스트(Execution Context)와 렉시컬 환경(Lexical Environment)은 자바스크립트 엔진이 코드를 실행하는 방법을 이해하는 데 중요한 개념입니다.
실행 컨텍스트 : 현재 실행되는 코드의 환경을 나타내며,
전역코드가 실행되는 전역컨텍스트 함수 내부 코드가 실행되는 함수 컨텍스트로 나뉠 수 있습니다.
- 전역 컨텍스트
- 전역 컨텍스트는 코드가 실행되는 동안 계속 유지되며, 코드 실행이 종료될 때까지 사라지지 않습니다.
- 전역 변수와 함수를 포함
- 함수 컨텍스트
- 함수 컨텍스트는 각각의 함수 호출에 대해 별도로 생성되며, 함수가 실행을 완료하고 반환하면, 해당 함수 컨텍스트는 메모리에서 제거됩니다(단, 클로저에 의해 참조되는 경우는 제외).
- 함수의 매개변수, 로컬 변수, 내부 함수 등이 저장
실행컨텍스트의 구성 요소
- 변수환경
- 변수 환경은 실행 컨텍스트가 생성될 때 한 번 설정되며, 이후에는 변경되지 않습니다. 따라서 var로 선언된 변수와 함수 선언이 해당됩니다.
- 렉시컬환경
- 환경레코드
- 현재 컨텍스트의 로컬 변수와 함수, 매개변수 등의 식별자 정보를 저장 ( *환경 레코드는 실행 중에 변경될 수 있습니다. 이는 let, const로 선언된 변수와 클래스 선언이 블록 스코프를 가지고 있기 때문 )
- 외부 렉시컬 환경에 대한 참조
- 환경레코드
- this바인딩
렉시컬환경 ( ~= 현재 스코프의 변수와 외부 스코프를 참조하는 환경 )
*환경레코드와 외부 렉시컬 환경에 대한 참조
- 환경레코드: 현재 실행 컨텍스트 내의 식별자와 그 식별자에 바인딩된 값을 저장하는 저장소 ( 변수 이름과 그 값 )
- 외부렉시컬 환경에 대한 참조: 현재 렉시컬 환경이 참조하는 상위 스코프의 렉시컬 환경 ( 상위 렉시컬 환경 )
( * Lexical scoping : 함수나 블록의 스코프가 선언된 위치에 따라 결정되는 것을 의미 )
'Javascript' 카테고리의 다른 글
프로세스&스레드 , 이벤트루프 (0) | 2023.12.10 |
---|---|
일급함수와 클로저(Closure) (0) | 2023.12.10 |
Hoisting (0) | 2023.12.10 |