[JavaScript] 실행 컨텍스트

백괴·2021년 12월 26일
0

자바스괴립트

목록 보기
2/5
post-thumbnail

잘못 된 내용에 대한 지적은 언제든 환영입니다.

실행 컨텍스트의 기본 정의

  • 실행 컨텍스트란? 코드 실행에 필요한 환경 정보를 모아놓은 객체이다.
  • 필요한 환경 정보를 모아 컨텍스트를 구성하며, 콜스택에 쌓인다.
    👉 실행 순서가 보장된다.
  • 코드 실행에 필요한 환경 정보
    • 변수 : 전역 변수, 지역 변수, 매개 변수, 객체의 프로퍼티
    • 함수 선언
    • 스코프
    • this

실행 컨텍스트의 구성 요소

  • 변수 객체
    - 전달 인자변수함수 선언을 갖는다.
    • 변수 객체화가 진행되는 시점에서 함수 및 변수 호이스팅이 발생한다.
  • 스코프 체인
    - 전역 객체와 상위 함수 스코프 및 자기 자신의 지역 스코프의 참조값이 차례대로 저장되어 있는 리스트이다.
    • 이를 통해 객체의 프로퍼티를 제외한 상위 스코프의 식별자를 검색하여 참조할 수 있다.
      👉 특정 식별자를 참조할 시, 자기 자신에 해당하는 지역 스코프에 없을 경우 스코프 체인을 통해 상위 스코프를 탐색한다. 검색에 실패하면 참조 에러를 발생시킨다.
  • this value
    - 자신이 속한 객체를 가리키는 자기 참조 변수 값이 할당된다.
    • this 값은 함수 호출 패턴에 의해 결정된다.

전역/함수 컨텍스트의 특징

function outer() {
  function inner() {
    return;
  }
  inner();
}
outer();

// 콜스택에 쌓이는 순서
// [전역컨텍스트] ➡ [전역컨텍스트, outer] ➡ [전역컨텍스트, outer, inner]
// ➡ [전역컨텍스트, outer] ➡ [전역컨텍스트]
  • 전역 컨텍스트
    • 애플리케이션이 실행되면 먼저 콜스택에 쌓이게 되는 실행 컨텍스트이며, 애플리케이션 종료 시 콜스택에서 소멸된다.
    • 변수 객체전역 객체를 가리킨다. 전역에 선언 된 전역 변수전역 함수를 프로퍼티로 소유한다.
      👉 인수를 받는 매개 변수가 없기에 arguments 객체가 없다.
    • this를 전역 객체로 설정한다.
  • 함수 컨텍스트
    • 함수가 호출되면 콜스택에 쌓이는 실행 컨텍스트이며, 함수 종료 시 콜스택에서 소멸된다.
    • 변수 객체활성 객체를 가리킨다. 인수를 받는 매개 변수가 있기에 argument 객체가 있으며, 그 외에 지역 변수지역 함수를 프로퍼티로 소유한다.
    • this는 함수의 호출 형태나 명시적 바인딩에 따라 다르다.

References
"모던 자바스크립트 Deep Dive" .이응모

0개의 댓글