실행 컨텍스트

호이스팅을 알아보기 전에 실행 컨텍스트에 관해서 짚고 넘어갈 필요가 있다

호이스팅이랑 같이 적으려다가 실행 컨텍스트 쪽 분량이 너무 방대해지는 바람에 호이스팅이랑 분리함…

설명

자바스크립트에서 사용되는 객체로, (자바스크립트는 진짜 모든 것이 객체 같다…) 실행할 코드에 제공할 변수, 함수 등의 정보들을 모아놓는 공간이라고 말할 수 있겠다

쉽게 말하자면 코드의 실행 환경을 객체로 저장해둔 것이라고 생각하면 좋다

이 실행 컨텍스트는 콜 스택에 적재되어 함수가 순서대로 실행될 수 있도록 한다

콜 스택 (호출 스택)

https://blog.chichoon.com/701

자세한 것은 이 포스팅을 참조하자

코드가 실행될 때마다 실행 컨텍스트 (프레임) 가 쌓이는 공간이다

말 그대로 스택이라 LIFO 방식으로 동작하며, 함수가 실행될 때 후술할 함수 실행 컨텍스트가 생성되어 스택에 push되고, 함수의 코드 실행이 전부 끝나면 스택에서 pop된다

콜 스택의 용량에 비해 너무 많은 실행 컨텍스트가 적재될 경우 (예시: 무한 재귀) 스택 오버플로우가 발생해 프로그램이 터질 수 있다

실행 컨텍스트 종류

실행 컨텍스트는 저마다의 생성 시점에 생성되어 콜 스택에 push된다

전역 컨텍스트

스크립트가 실행될 때 가장 먼저 생성되는 실행 컨텍스트로, 전역 정보들을 총체적으로 관리하는 환경이다

스크립트가 실행될 때 (프로그램이 실행될 때) 단 한 개만 생성되며, 함수 밖에 있는 정보들은 전부 전역 컨텍스트에 모인다

브라우저에서는 window 객체, Node.js에서는 global 객체가 전역 컨텍스트가 된다