실행 컨텍스트

홍석현·2023년 6월 1일
1

CS

목록 보기
4/6

실행 컨텍스트는 프로그래밍에서 중요한 개념 중 하나입니다. 실행 컨텍스트는 코드가 실행되는 동안 생성되는 환경을 의미합니다. 이 환경은 변수, 함수, 객체, 스코프, 호이스팅(Hoisting) 등의 정보를 담고 있어 코드의 실행을 가능하게 합니다.

실행 컨텍스트는 크게 세 가지 요소로 구성됩니다.

변수 객체(Variable Object):

변수, 함수 선언 및 매개변수와 인수를 저장하는 객체입니다. 이 객체는 변수와 함수에 대한 식별자를 포함하고 있으며, 스코프 체인(Scope Chain)을 통해 접근할 수 있습니다.

스코프 체인(Scope Chain):

현재 실행 컨텍스트의 변수 객체와 상위 실행 컨텍스트의 변수 객체들을 연결한 체인입니다. 이 체인을 통해 변수와 함수에 접근할 수 있으며, 식별자 검색 시 사용됩니다.

this 값:

실행 컨텍스트에서 현재 객체를 참조하기 위한 값입니다. this는 실행 컨텍스트가 생성될 때 결정되며, 함수 호출 방식에 따라 다르게 동작합니다.

실행 컨텍스트의 생성은 다음과 같은 상황에서 발생합니다.

전역 실행 컨텍스트:

코드 실행 시 가장 먼저 생성되는 실행 컨텍스트로, 전역 변수와 함수가 포함됩니다.

함수 실행 컨텍스트:

함수가 호출될 때마다 생성되는 실행 컨텍스트입니다. 각 함수는 독립적인 실행 컨텍스트를 가지며, 해당 함수의 변수와 인수가 포함됩니다.

eval 함수 실행 컨텍스트:

eval 함수를 실행할 때 생성되는 실행 컨텍스트입니다. eval 함수는 문자열로 표현된 JavaScript 코드를 동적으로 실행할 수 있도록 합니다.

실행 컨텍스트는 스택(Stack) 형태로 관리됩니다. 코드의 실행 흐름에 따라 실행 컨텍스트가 스택에 차곡차곡 쌓이고, 현재 실행 중인 컨텍스트는 스택의 가장 위에 위치합니다. 함수가 실행을 마치면 해당 컨텍스트는 스택에서 제거되고, 이전에 실행 중이던 컨텍스트가 다시 활성화됩니다.

실행 컨텍스트는 변수와 함수의 스코프, 호이스팅 등을 관리하여 코드 실행을 가능하게 합니다. 이를 이해하고 활용하면 JavaScript와 같은 프로그래밍 언어에서 변수의 범위와 생명 주기, 함수의 동작 방식 등을 이해하고 효율적인 코드를 작성할 수 있습니다.

스택이라고 하면 힙스택 큐스택과 헷갈리기 쉽지만 작동 방법과 개념이 다르다.

스택(Stack):

스택은 데이터를 임시로 저장하는 자료구조로, 후입선출(Last-In-First-Out, LIFO)의 동작 방식을 갖습니다. 즉, 마지막에 추가된 데이터가 가장 먼저 제거됩니다. 함수 호출과 관련하여 실행 컨텍스트의 스택을 의미하기도 합니다. 함수가 호출되면 해당 함수의 실행 컨텍스트가 스택에 추가되고, 함수의 실행이 완료되면 해당 컨텍스트가 스택에서 제거됩니다.

힙(Heap):

힙은 동적으로 할당된 메모리를 관리하는 영역입니다. 힙은 데이터의 크기와 상관없이 유연하게 메모리를 할당하고 해제합니다. 객체와 배열 등의 동적인 데이터 구조는 힙에 저장되며, 이러한 데이터에는 참조를 통해 접근합니다.

큐(Queue):

큐는 데이터를 순서대로 저장하는 자료구조로, 선입선출(First-In-First-Out, FIFO)의 동작 방식을 갖습니다. 즉, 먼저 추가된 데이터가 가장 먼저 제거됩니다. 큐는 데이터의 추가를 enqueue, 제거를 dequeue라고 합니다. 큐는 주로 비동기 처리나 작업 큐 등에 활용됩니다.

이 세 가지 개념은 프로그래밍에서 메모리와 데이터 구조를 관리하는 방식을 설명하는 용어입니다. 각각의 개념은 서로 다른 목적과 동작 방식을 가지고 있으며, 프로그램의 실행 및 메모리 관리에 중요한 역할을 수행합니다.

profile
Front-end to Full-stack

0개의 댓글