TIL | <JavaScript>실행 컨텍스트 요약 정리

bubblegum·2024년 1월 4일
0

Today I learn(TIL)

목록 보기
5/84
post-thumbnail

실행 컨텍스트에 대한 강의를 좀 더 간략하게 요약 정리하고자 한다.

1. 실행 컨텍스트

자바스크립트의 데이터 처리 구조는 콜 스택(call stack)인데, 이 구조는 후입선출(last in, first out)식으로 가장 나중에 stack된(쌓인) 컨텍스트(context)가 먼저 실행되고 그 밑에 쌓인 컨텍스트가 실행되는 구조를 말한다. 여기서 컨텍스트(context)는 코드를 실행할 때 필요한 환경 정보들을 모아둔 객체(object)이다. 컨텍스트가 활성화되는 시점은 런타임(runtime, 코드를 실행할 때. 또는 환경)이다.

2. 실행 컨텍스트가 담고 있는 정보(VE와 LE, ThisBinding)

차곡차곡 쌓인 스택에서 각각의 실행 컨텍스트는 크게 세 가지 객체, 즉 Variable Environment(VE), Lexical Environment(LE), This Binding에 대한 정보를 담고 있다. 먼저 VE는 해당 컨텍스트 내의 식별자 정보(environment recode, recode)와 외부 환경 정보(outer environment reference, outer), 선언 시점의 스냅샷(snapshot)을 갖고 있다. LE는 VE와 동일한 recode와 outer를 가지고 있지만, 스냅샷을 유지하지 않는다. 다시 말해 변경된 사항을 실시간으로 반영한다.

3. recode와 hoisting

정보 수집은 순차적으로 수집되지만 실제 실행 컨텍스트가 활성화되면 식별자 정보가 스택을 무시하고 호이스팅(hoisting)된다. 즉 recode(매개변수 식별자, 함수선언문, var로 선언된 변수 식별자)가 수면 위로 떠오르듯 먼저 실행된다는 것이다.

4. outer와 스코프 체인

outer는 현재 호출된 함수가 선언될 당시의 환경 정보를 담고 있다. 이러한 outer는 스코프 체인(scope chain)을 가능하게 하는데, 스코프 체인이란 스코프(scope), 즉 식별자에 대한 유효 범위를 안에서부터 바깥으로 차례로 검색해나가는 것을 말한다. 식별자가 선언된 시점(스택)에서부터 식별자의 유효범위를 찾아낸다는 것이다.

4. This Binding

this는 일반적으로 인스턴스(instance, 클래스로 생성된 클래스에 속하는 객체)에 해당하지만, this는 클래스에 구애받지 않고 자신을 호출한 주체에 따라 소속이 결정(binding)된다. 따라서 호출한 주체가 없는 함수 내부에 있는 this는 항상 전역 객체를 가리키게 된다. 예외적으로 화살표 함수는 this를 바인딩하지 않는다. 따라서 바로 이전의 상위 객체를 가리키게 된다.

profile
황세민

0개의 댓글

관련 채용 정보