실행 컨텍스트

박영호·2021년 3월 30일
1

실행 컨텍스트란(Execution Context)

실행 컨텍스트란 실행 가능한 코드를 형상화하고 추상적인 개념이며
실행 컨텍스트는 실행 가능한 코드가 실행되기 위해 필요한 환경이라고 한다.

자바스크립트 엔진에서 코드를 실행하기 위해서는 실행에 필요한 정보를 알고 있어야 한다.

  • 변수 : 전역변수, 지역변수, 매개변수, 객체의 프로퍼티
  • 함수 선언
  • 변수의 유효범위
  • this
var x = 'xxx';

function foo () {
  var y = 'yyy';

  function bar () {
    var z = 'zzz';
    console.log(x + y + z);
  }
  bar();
}
foo();

위 코드를 실행하면 아래와 같이 실행 컨텍스트 스택(Stack)이 생성하고 소멸한다.

  1. 컨트롤이 실행 가능한 코드로 이동하면 논리적 스택 구조를 가지는 새로운 실행 컨텍스트 스택이 생성된다
  2. 전역 코드(Global code)로 컨트롤이 진입하면 전역 실행 컨텍스트가 생성되고 실행 컨텍스트 스택에 쌓인다.
  3. 함수를 호출하면 해당 함수의 실행 컨텍스트가 생성되며 직전에 실행된 코드 블록의 실행 컨텍스트 위에 쌓인다.
  4. 함수 실행이 끝나면 해당 함수의 실행 컨텍스트를 파기하고 직전의 실행 컨텍스트에 컨트롤을 반환한다.

실행 컨텍스트의 3가지 객체

  • Variable Object(VO/ 변수객체)

실행 컨텍스트가 생성되면 자바스크립트 엔진은 실행에 필요한 여러 정보들을 담을 객체를 생성한다. 이를 Variable Object(VO / 변수 객체)라고 한다. Variable Object는 코드가 실행될 때 엔진에 의해 참조되며 코드에서는 접근할 수 없다.

Variable Object가 정보를 담는 객체

  • 변수
  • 매개변수(Parameter)와 인수 정보(Arguments)
  • 함수 선언 (함수 표현식은 제외)
  • Scope Chain

스코프 체인(Scope Chain)은 리스트라고 생각하면 된다.
전역 객체와 함수의 스코프의 레퍼런스를 저장하고 있다.
스코프 체인은 실행 컨텍스트가 참조할 수 있는 변수, 함수 선언 등의 정보를 담고 있는 리스트를 가르킨다.

  • this value

this 프로퍼티는 this 값이 할당되는데 할당되는 값은
this의 5가지(global, functionInvocation, (call,apply,bind), Construction, MethodInvocation)패턴으로 결정된다.

profile
무언가에 호기심이 생기면 적극적이고 재밌게 그걸 해결해내고 싶어하는 프론트 엔드 개발자 입니다 .

0개의 댓글