실행 컨텍스트 in JS

동동·2021년 6월 26일
1
post-thumbnail

실행 컨텍스트란 무엇인가요?

실행 컨텍스트(execution context)는 실행할 코드에 제공할 환경 정보들을 모아놓은 객체입니다.

JS 엔진은 새로운 실행 컨텍스트를 구성할 때 해당 실행 컨텍스트와 관련된 코드들을 실행하는 데 필요한 환경 정보들을 수집해서 실행 컨텍스트에 저장하고 이를 실행 컨텍스트 스택에 쌓아올려, 가장 위에 쌓여있는 컨텍스트와 관련 있는 코드를 실행하게 됩니다.

실행 컨텍스트는 JS엔진이 활용할 목적으로 생성할 뿐 개발자가 코드를 통해 확인할 수는 없습니다.

실행 컨텍스트 스택이란?

실행 컨텍스트 스택은 실행 컨텍스트를 추적하는 데 사용되는 스택으로서, 활성화된 실행 컨텍스트는 항상 이 스택의 최상위 요소입니다.

활성화된 실행 컨텍스트와 관련되지 않은 코드로 제어가 이전될 때 새로운 실행 컨텍스트가 생성됩니다.

새로 생성된 실행 컨텍스트는 스택에 푸시되고 활성화된 실행 컨텍스트가 됩니다.

실행 컨텍스트를 구성할 수 있는 방법

  • 전역공간: 자동으로 생성됩니다. 브라우저 환경에서는 window, node.js에서는 global 입니다.

  • eval() 함수

  • 함수 실행

  • 블록(ES 6+)

어떤 환경 정보가 담겨있나요?

  • VariableEnvironment:선언 시점의 현재 컨텍스트 내의 식별자들에 대한 정보와 외부 환경 정보로서, 코드가 실행되어도 변경 사항은 반영되지 않습니다.

  • LexicalEnvironment: 현재 컨텍스트 내의 식별자들에 대한 정보와 외부 환경 정보로서, 코드의 실행에 따라 변경 사항이 반영됩니다.

  • ThisBinding: 함수 실행시 묵시적으로 전달되는 매개변수 this에 해당하는 객체

Reference

profile
작은 실패, 빠른 피드백, 다시 시도

1개의 댓글

comment-user-thumbnail
2021년 6월 26일

실행컨텍스트 정말어렵네요ㅠ 저도 공부해야겠습니다

답글 달기