JavaScript/기초

[JavaScript] 실행컨텍스트

어씨 2019. 12. 30. 14:39

JavaScript


실행 컨텍스트

함수를 호출할 때 해당 함수의 호출 정보가 차곡차곡 쌓여있는 콜 스텍이있다.

`실행 콘텍스트`는 콜 스택에 들어가는 실행 정보 하나와 유사하다.

console.log('This is global context');

  function context1() {

console.log('This is context1');

}

function context2() {

  context1();

  console.log('This is context2');

}

Context2();

/* 출력 결과

/ This is global context

/ This is context1

/ This is context2 */

  1. 실행 컨텍스트 생성

    실행컨텍스트실행컨텍스트
    변수 객체 vars, function, arguments...
    스코프 체인 [List]
    this Context object
    • 실행 컨텍스트 생성 순서

      • 변수 객체 생성

        실행 컨텍스트에서 사용되는 지역 변수 및 함수 선언을 저장하는 객체

      • 활성 객체 생성(feat.함수)

        실행에 필요한 여러가지 정보를 감을 객체, 사용자가 정의한 변수 및 객체를 저장

      • arguments 객체 생성

      • 스코프 정보 생성

        현재 컨텍스트의 유효 범위를 나타내는 스코프 정보를 생성한다.

        현재 컨택스트에서 특정 변수에 접근해야할 경우 이 리스트를 활용하며,

        `스코프 체인`이라 부른다.

      • 변수 생성

        함수 인자는 각각의 프로퍼티가 만들어져 그 값이 할당되며,

        만약 값이 넘겨지지 않았다면 undefined 가 할당된다.

        주의 할 점은 이 과정에서 내부 변수나 내부 함수는 단지 메모리 생성만 하고, 초기화는 각 변수나 함수에 해당하는 표현식이 실행되기 전까지 이루어지지 않는다.

      • this 바인딩

        this 키워드를 사용하는 값이 참조된다.

      • 코드 실행 생성

        이렇게 하나의 실행 컨텍스트가 생성되고, 활성 객체(변수 객체)가 만들어진 후에,

        코드에 있는 여러가지 표현식 실행이 이루어진다.

    1. example