상세 컨텐츠

본문 제목

[Javascript]Execution Contexts

기술이 된 상상

by Indigo_Pure 2020. 6. 9. 09:15

본문

728x90
반응형

실행 컨텍스트(Execution Contexts)

  • 자바스크립트 엔진의 실행 원리
  • 실행 가능한 코드가 실행되기 위해 필요한 환경
  • 코드 수행 환경에 대한 여러 가지 정보를 가지고 있는 어떤 장치

코드를 실행하기 위해서 자바스크립트 엔진이 알아야하는 정보

  • 변수
  • 함수 선언
  • 변수의 유효범위(Scope)
  • this

실행 스택(execution stack)

  • LIFO(Last In Frist Out)

실행 컨텍스트는 어떻게 만들어지는가

  1. Creation 단계

    1) Lexical Environment 생성

    2) Variable Environment 생성

  2. Execution 단계

1. Creation 단계

Lexical Environment

변수나 함수 등의 식별자를 정의하는 객체

식별자와 참조 혹은 값을 기록하는 Environment Recordouter라는 또 다른 Lexical Environment를 참조하는 포인터로 구성된다.

  • Environment Record :

    • Declarative environment code : function code 에서는 변수와 함수의 선언이 저장되는 영역(function의 arguments 객체 생성(length 포함))
    • Object environment code : global code 에서는 window 객체 등의 브라우저 정의 객체와 함께 변수와 함수 선언이 저장되는 영역
  • outer :
    외부 Lexical Environment를 참조하는 포인터로, 중첩된 자바스크립트 코드에서 스코프 탐색을 하기 위해 사용된다.

  • this binding :

    • global 실행 컨텍스트에서는 global obejct에 this를 바인딩(browser에서는 window 객체)
    • function 실행 컨텍스트에서는 function을 호출한 주체에 따라 this가 바뀐다.
      • 객체 참조로부터 함수가 호출되었다면 해당 객체가 this가 된다.
      • 그렇지 않다면 this는 global object이거나 undefined(strict mode)이다.

 

Variable Environment(조사 및 학습 필요)

  • VariableStatements에 의해 만들어진 초기 변수 상태 값
  • 기본 적인 구조는 Lexical Environment와 같다.

 

2. Execution 단계

변수 할당이 완료되고 코드가 실행된다.

 

Lexical Environment를 통해 변수들이 할당 된다. 이 때 변수 서언 식별자에 따라서 변수가 초기화 된다.


let, const은 'uninitialized'로 선언되고 접근되지 않는다.
var로 선언된 변수는 'undefined'로 선언되고 접근 가능하다.
키워드에 따라 다른 이유는 Hoisting의 개념 때문이다.

Hoistingvar로 선언된 변수에서만 발생한다.

 

아래 참고 블로그에서 더 쉽게 이해할 수 있도록 예제가 나와있다.

 

참고

728x90
반응형

'기술이 된 상상' 카테고리의 다른 글

[Javascript] 정규표현식 16진수 패턴 만들기  (0) 2021.03.12
[Javascript] JSON stringify  (0) 2021.03.08
이미지 파일 타입과 종류  (0) 2019.08.12
[HTML] HTML5 Specification  (0) 2019.06.11
[Javascript] VueJS Filter  (0) 2018.09.19

관련글 더보기