렉시컬 스코프(Lexical scope)에 대해 설명해 주세요.
2024. 9. 2. 09:51ㆍ코드잇 스프린트/위클리 페이퍼
렉시컬 스코프(Lexical scope)에 대해 설명해 주세요.
1. 스코프
- 식별자의 접근 규칙에 따른 유효 범위
- 범위 기준
- 전역 스코프 : 모든 코드의 기본 범위
- 모듈 스코프 : 모듈로 실행되는 코드 범위
- 함수 스코프 : 함수로 생성된 범위
- 블록 스코프 : 중괄호로 생성된 범위
- 결정 기준
- 동적 스코프 : 런타임 도중 결정된 범위
- 렉시컬 스코프 : 선언 시점에 속한 맥락으로 결정된 범위
2. 실행 맥락
- Execution Context
- JS 코드가 실행될 때의 환경
2-1. 실행 맥락 종류
- 전역 실행 맥락
- Global Execution Context
- 전역 공간에서의 선언
- 프로그램 실행/종료 시 맥락 생성/폐기
- 함수 실행 맥락
- Function Execution Context
- 함수 선언 내에서의 선언
- 함수 실행/종료 시 맥락 생성/폐기
2-2. 콜 스택
- 실행 맥락을 스택 형태로 관리하는 메커니즘
3. 실행 맥락 구조
3-1. 어휘적 환경
- Lexical Environment
- 해당 맥락의 식별자 저장
- let/const 변수와 함수를 다룸
환경 레코드
- Environment Record
- 해당 맥락에 포함된 식별자 저장 및 값 관리
외부 환경 참조
- Reference to the Outer Environment
- 어휘적 중첩 구조(Lexical Nesting Structure)
- 환경 레코드에서 식별자를 못 찾을 경우, 상위 어휘적 환경을 참조하여 탐색
- 함수는 선언 시 내부 슬롯
[[Environment]]
에 자신이 속한 실행 맥락의 어휘적 환경을 참조시키고, 이를 외부 환경 참조에 활용
3-2. 변수 환경
- Variable Environment
- 어휘적 환경과 동일한 구조이나, var 변수를 다룸
3-3. This 바인딩
this
변수에 바인딩 되는 값- this 바인딩 방식 참고
3-4. 실행 맥락 구성 과정
생성 단계
- 맥락 내 식별자 선언을 환경 레코드에 저장
실행 단계
- 코드를 실행하며 식별자 업데이트
4. 클로저
- 함수의 어휘적 환경 & 선언 때 속한 어휘적 환경의 조합, 또는 이러한 환경을 가진 함수 그 자체
- 외부 함수가 콜 스택에서 제거되어도, 내부 함수가 외부 함수를 참조하므로 외부 함수의 스코프에 접근할 수 있게 됨
- 함수 내 변수 데이터 보호 및 상태 관리에 활용 가능
5. 참고 자료
'코드잇 스프린트 > 위클리 페이퍼' 카테고리의 다른 글
리액트에서 Virtual DOM이 무엇인지, 이를 사용하는 이유는 무엇인지 설명해 주세요. (1) | 2024.09.07 |
---|---|
HTTP 메소드에 대해 설명해 주세요. (0) | 2024.09.02 |
자바스크립트 this에 대해 설명해 주세요. (0) | 2024.09.02 |
이벤트 버블링, 캡쳐링, 위임에 대해 설명해 주세요. (0) | 2024.09.02 |
Git Flow 브랜치 전략에 대해 설명해 주세요. (1) | 2024.08.19 |