- 자바스크립트 엔진의 실행 원리
- 실행 가능한 코드가 실행되기 위해 필요한 환경
- 코드 수행 환경에 대한 여러 가지 정보를 가지고 있는 어떤 장치
코드를 실행하기 위해서 자바스크립트 엔진이 알아야하는 정보
실행 스택(execution stack)
Creation 단계
1) Lexical Environment 생성
2) Variable Environment 생성
Execution 단계
Lexical Environment
변수나 함수 등의 식별자를 정의하는 객체
식별자와 참조 혹은 값을 기록하는 Environment Record
와 outer
라는 또 다른 Lexical Environment
를 참조하는 포인터로 구성된다.
Environment Record
:
outer
:
외부 Lexical Environment
를 참조하는 포인터로, 중첩된 자바스크립트 코드에서 스코프 탐색을 하기 위해 사용된다.
this
binding :
this
가 바뀐다.
this
가 된다.this
는 global object이거나 undefined
(strict mode)이다.
Variable Environment(조사 및 학습 필요)
Lexical Environment
와 같다.
변수 할당이 완료되고 코드가 실행된다.
Lexical Environment
를 통해 변수들이 할당 된다. 이 때 변수 서언 식별자에 따라서 변수가 초기화 된다.
let
, const
은 'uninitialized'로 선언되고 접근되지 않는다.var
로 선언된 변수는 'undefined'로 선언되고 접근 가능하다.
키워드에 따라 다른 이유는 Hoisting의 개념 때문이다.
Hoisting은 var
로 선언된 변수에서만 발생한다.
아래 참고 블로그에서 더 쉽게 이해할 수 있도록 예제가 나와있다.
참고
[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 |