DOM 트리를 구성하기 전에 HTML 문서에 script를 만나면 자바스크립트 엔진에 제어권을 넘긴다.

자바스크립트 엔진이 해당 javascript 코드 파일을 로드해서 실행한다.

이후에 다시 HTML 로 넘어와서 나머지 HTML 코드를 읽고 DOM 트리 구성하고 화면에 표시한다.

만일 자바스크립트의 해석에 시간이 많이 걸리는 경우 순서는 매우 중요하다.

자바스크립트 엔진

javascript 엔진은 자바스크립트 코드를 이해하고 실행하는 인터프리터 방식의 프로그램이다.

컴파일러 vs 인터프리터

인터프리터와 컴파일러는 하나의 언어를 다른 언어로 바꿔준다는 점에서 비슷한 맥락을 갖지만 몇 가지 차이점을 갖는다.

종류

V8

구글에서 만들었으며, 크롬에 먼저 채택되었고, 이후 Electron, Node.js 에서 사용중, Microsoft 에서도 기존 자체 엔진을 버리고, V8 을 채택 중이다.

SpiderMonkey

Firefox 브라우저에서 사용 중이다.

JavaScriptCore

오픈 소스로 Apple의 Safari 브라우저에서 사용 중이다.

자바스크립트 엔진의 동작 원리(feat. V8)

V8 엔진은 JIT(Just-In-Time)컴파일 기법을 사용한다.

JIT 컴파일 기법이란 일단 인터프리터와 컴파일 방식을 혼합하여 절충한 방식으로 일단 알고 있고 ,자바도 JVM에서 이런 방식으로 컴파일 한다.

자바 스크립트의 진행 순서

문제점

실무에서는 대부분 자바스크립트를 외부에서 가져와서 사용하며, 자바스크립트 코드 양도 상당하다.