자바스크립트는 싱글 스레드 언어로써 동시성을 처리하기 위해 실행 컨텍스트와 Lexical Environment, Environment Record, Outer Environment Reference와 같은 개념들을 사용합니다. 이 포스팅에서는 이러한 개념들을 살펴보고, 어떻게 상호작용하는지 이해해봅시다.
실행 컨텍스트 (Execution Context)
실행 컨텍스트는 코드가 실행되는 환경을 나타냅니다. 자바스크립트 엔진은 실행 컨텍스트 스택을 사용하여 실행 중인 코드의 컨텍스트를 추적합니다. 이 스택에는 전역 컨텍스트와 함수 컨텍스트가 포함될 수 있으며, 호출 스택이라고도 합니다.
전역 컨텍스트
전역 컨텍스트는 코드가 처음 실행될 때 생성되며, 전역 객체와 관련된 변수와 함수를 포함합니다. 전역 컨텍스트는 실행 컨텍스트 스택의 가장 아래에 위치합니다.
함수 컨텍스트
함수가 호출될 때마다 함수 컨텍스트가 생성되며, 해당 함수의 인수, 변수 및 중첩된 함수를 포함합니다. 함수 컨텍스트는 실행 컨텍스트 스택의 맨 위에 위치하며, 함수 실행이 완료되면 스택에서 제거됩니다.
Lexical Environment
Lexical Environment는 실행 컨텍스트의 한 부분으로써, 식별자와 그것들의 값에 대한 정보를 포함합니다. Lexical Environment는 Environment Record와 Outer Environment Reference 두 가지 요소로 구성됩니다.
Environment Record
Environment Record는 실제로 식별자와 그것들의 값을 저장하는 데 사용되는 데이터 구조입니다. 자바스크립트에서는 선언적 환경 레코드(Declarative Environment Record)와 객체 환경 레코드(Object Environment Record) 두 가지 유형이 있습니다.
- 선언적 환경 레코드: 변수, 함수, 매개변수 등을 저장하는 데 사용됩니다.
- 객체 환경 레코드: with 문 및 전역 객체와 관련된 식별자를 저장하는 데 사용됩니다.
Outer Environment Reference
Outer Environment Reference는 현재 Lexical Environment의 외부 환경을 참조합니다. 이 참조를 통해 스코프 체인이 구성되며, 식별자의 값을 찾기 위해 이 체인을 따라갑니다.
결론
자바스크립트는 실행 컨텍스트, Lexical Environment, Environment Record, Outer Environment Reference와 같은개념들을 사용하여 코드의 실행 환경과 스코프를 관리합니다. 이러한 요소들은 서로 상호 작용하여 변수와 함수에 대한 접근 및 수정을 가능하게 합니다. 이를 이해하는 것은 자바스크립트 개발자로서 중요한 기술이며, 코드의 동작을 보다 정확하게 예측할 수 있게 해줍니다.
'개발관련 > 자바스크립트 팁' 카테고리의 다른 글
자바스크립트 parseInt / parseFloat / number를 이용하지 않고 문자열을 숫자로 형변환 하는 구현 방법 (0) | 2023.07.11 |
---|---|
자바스크립트를 예로 들어서 의존성 역전 원칙(Dependency Inversion Principle, DIP) (0) | 2023.07.10 |
자바스크립트의 반복문 종류 및 사용법: for, for...in, for...of, forEach (0) | 2023.04.26 |
자바스크립트 배열 유니크 요소만 남기기 , 중복 제거 하기 (0) | 2023.04.13 |
error TS2322: Type 'Timeout' is not assignable to type 'number' 해결 방법 (0) | 2023.03.15 |