
JavaScript engine 의 optimizing compiler 에 관해 정리를 해보려고 한다. 주요 내용은 구글 V8 팀 멤버의 발표를 기반으로 한다. JavaScript engine 이란 JavaScript engine 은 대표적으로 V8, SpiderMonkey, Chakra 등이 있다. 기본적으로 JavaScript engine 은 JavaScript 코드를 machine code 로 변환하는 역할을 한다. JIT dynamically typed 한 언어임에도 어떻게 그렇게 빠를 수 있을까? JIT(Just In Time) compilation 에 의해 가능하다. JIT compilation 을 통해 machine code 를 runtime 에 생성한다. AOT(Ahead Of Time) ..
변수 생성 3단계 1. 선언 단계 실행 컨텍스트에 변수를 등록한다. 변수 선언문을 의미하는게 아니다. 2. 초기화 단계 실행 컨텍스트에 등록된 변수를 메모리에 할당한다. var, let 의 경우 이 단계에서 변수에 undefined 가 할당된다. var 의 경우 변수 선언 단계에서 초기화가 이루어진다. 선언 단계와 초기화 단계가 동시에 발생한다. let 의 경우 변수 선언문에서 초기화가 이루어진다. 선언 단계와 초기화 단계가 따로 발생한다. 3. 할당 단계 변수 선언문에 작성한 값을 변수에 할당한다. 변수 선언문과 변수 할당문 // 변수 선언문 var a; let b; // 변수 할당문 a = 1; b = 1; // 변수 선언문과 할당문이 함께 존재 const c = 1; TDZ 스코프의 시작 지점부터 ..