728x90
실행 컨텍스트란?????
사실 이 주제는 3주 차 강의 내용인데 처음 들었을 때는 이해가 가지 않는 부분이 많아서 TIL에 기록을 하지 않았다. 강의를 2 회독 한 시점에서 조금 감을 잡았고 정리한 내용을 한 번 더 읽으니까 더 이해하기 쉬웠다.
자바스크립트는 CallStack 이란곳에 실행 콘텍스트를 저장하고 Stack자료구조(FIFO)처럼 관리해서 코드 실행순서를 보장한다.
CallStack에 저장하는 실행 콘텍스트란것이 무엇인지 알아보자
실행 컨텍스트
- 실행할 코드에 제공할 환경 정보를 모아놓은 객체이다.
- 3가지 일을 함
- 호이스팅
- 외부 환경 구성
- this 바인딩
실행 콘텍스트에는 무엇이 담기나??
- VariableEnvironment
- 식별자 정보 (record)는 변수, 함수, 매개변수 등을 의미한다.
- 외부 환경 정보 (outer)이다.
- 선언 시점에서 스냅숏을 가지고 있으며, 실시간으로 반영되지 않는다.
- LexicalEnvironment
- 변경사항을 실시간으로 반영한다.
- 실시간 반영을 제외한 나머지는 VariableEnvironment와 동일하다.
- ThisBinding
- this 식별자가 어떤 객체를 가리킬지 정해야 한다.
Record
- 호이스팅 (식별자 정보를 모두 끌어올린다) ⇒ 레코드의 수집과정
- 매개변수, 변수는 선언부만 끌어올린다 ⇒ 할당은 X
- 함수는 전체를 끌어올린다.
- 함수 선언문 : 함수 전체가 호이스팅 된다. ⇒ 전체에 영향이 간다
- 함수 표현식 : 변수 선언부만 호이스팅 된다. ⇒ 함수 할당 이후부터 영향이 간다. (이 방식을 주로 사용해야 함)
Outer
- 그 실행 컨텍스트가 선언될 당시에 LexicalEnvironment 정보를 다 가지고 있다. 그래서 스코프 체이닝에 의해 상위 콘텍스트에 record를 읽을 수 있다.(상위 객체의 변수, 메서드 등등을 읽을수 있다.)
- 예 ) A → B → C 순서대로 함수가 실행된다고 가정했을 때 C의 실행콘텍스트가 담길 때 B의 LexicalEnvironment정보가 C의 outer로 담긴다.
'개발이야기' 카테고리의 다른 글
[TIL]08.타입스크립트 세팅 + 데이터 타입 (0) | 2023.10.23 |
---|---|
[TIL]07.자바스크립트 this, this바인딩 (1) | 2023.10.20 |
[TIL]05.자바스크립트 Class의 Getter,Setter / Static 정적메서드 (0) | 2023.10.18 |
[TIL]04. 자바스크립트 콜백함수, 클래스 (0) | 2023.10.17 |
[TIL]03. 자바스크립트 데이터 저장 원리 (0) | 2023.10.16 |