일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 변수선언
- 커스텀훅
- JavaScript
- 동적메타태그생성
- ReactQuery
- GIT
- CSS
- ContextAPI
- customHook
- 오픈그래프
- 3-21
- 메타태그
- 실수
- open gragh
- 리액트쿼리
- 리눅스 명령어
- 옵셔널 체이닝
- Today
- Total
나를 위한 기록
231026 / Day 23 본문
실행 컨텍스트란 내가 작성한 코드에 제공할 환경 정보들을 모아놓은 객체다.
우리가 코드를 짜면 동일한 환경에 놓인 것 끼리 객체를 이루고, 그 객체들은 콜스택에 쌓인다.
콜스택은 코드가 다 실행되고나면 없어진다.
실행 컨텍스트의 구성 순서는 다음과 같다.
1. 코드가 실행되자 마자 항상 전역컨텍스트가 먼저 Call Stack으로 IN -> 전역컨텍스트가 활성화된 상태
2. 다음으로 Outer컨텍스트가 Call Stack에 쌓이며 Outer 내부로 IN
3. Inner 함수가 호출되는 코드를 만나자 마자 Outer가 중단 되며 Inner 컨텍스트가 Call Stack으로 IN.
4. Inner 함수가 실행되고난 후 Call Stack에서 Out -> Outer 함수 활성화 상태
5. Outer 함수 실행 후 Call Stack에서 Out -> 전역 활성화 상태
6. 전역컨텍스트가 재개하고 끝이나면 Call Stack에서 Out되며 코드 종료.
실행컨텍스트가 가지고 있는 정보: Variavle Environment(VE), Lexical Environmen(LE), This Binding
VE와 LE는 구성요소가 동일하다. VE와 LE 모두 Record(식별자 정보 'const a =1'의 경우 'const a')와 외부환경정보 (Outer)를 가진다.
그중 Recoed의 수집 과정을 '호이스팅'이라 한다.
다만 LE는 시간이 갈수록 변경사항을 실시간으로 반영하면서 업데이트 되고, VE는 선언시점의 모습인 Snapshot을 간직한다.
결국 실행컨텍스트를 생성할 때 VE에 정보를 먼저 담은 다음, 이를 그대로 복사해서 LE를 만들고, 이후에는 주로 LE를 활용한다.
호이스팅 규칙
1. 매개변수 및 변수는 선언부를 호이스팅(끌어올린다)한다.
2. 함수 선언문의 경우 함수 전체를 호이스팅하고 함수 표현식은 변수 선언부만 호이스팅한다.
'Today I Learned' 카테고리의 다른 글
231031 / Day 28 (0) | 2023.10.31 |
---|---|
231027 / Day 24 (0) | 2023.10.27 |
231025/D+22 (0) | 2023.10.25 |
231024/D+21 (0) | 2023.10.24 |
231023/D+20 (0) | 2023.10.23 |