실행 컨택스트(Execution Context)

장세진·2023년 6월 15일
1

JavaScript

목록 보기
1/12
post-thumbnail

이 글은 kwangsunny님의 tistory를 참고해서 작성 한 것입니다.

실행 컨택스트는 2가지의 종류를 가지고 있다
1. Global Execution Context - 스크립트가 처음 실행될때 생성된다.
2. Function Execution Context - 함수가 호출될때 생성된다.

일반적으로 함수를 호출할 때 실행되는 함수 자원을 생각하면 쉽다. 조금 더 어렵게 풀어쓰면 현재 실행중인 코드에 대한 세부 정보(제어 흐름의 위치, 선언된 변수와 함수, this, argments 등)를 담고 있는 데이터 구조이다.

실행 컨텍스트는 호출이 되면 'call stack'이라는 자료구조에 저장되어 실행된다. stack은 말 그대로 쌓는다는 의미로 마지막에 들어온 데이터가 가장 처음에 실행되며 처음으로 들어온 데이터가 가장 마지막에 실행되는 구조이다(FILO : first in last out)

실행 컨텍스트의 예를 들어보자.

<script>
    // 스크립트 실행 -> Global Execution Context 가 생성되고 스택에 push된다.
    
    function A(){
    	B(); // 함수B 의 실행 컨택스트가 생성되고 스택에 push.
    }
    
    function B(){
    	console.log('done!'); 
    }   
    
    A(); // 함수A 의 실행 컨택스트가 생성되고 스택에 push.
</script>

위의 코드가 진행되는 순서를 그림으로 표현하면 아래와 같다.

코드 실행순서

자바스크립트에서 재귀함수를 작성하다보면 가끔 'Maximum call stack'이라는 에러를 마주한적이 있다. 이는 스택이 가지고 있는 한계를 초과해서 실행 컨택스트가 push 되었기 때문에 나타나는 에러이다.

profile
풀스택이 되고 싶은 프론트엔드 개발자

0개의 댓글