JS동작

JS는 컴파일언어? 인터프리터언어?

인터프리터언어이다. 그러나 실행중 컴파일이 필요한 경우에만 엔진 내부에서 컴파일 과정을 거친다

컴파일이란 작성된 코드를 기계어로 변환하는 것을 말한다.

인터프리터는 번역과 동시에 실행이 이루어짐

동작과정은 js파일 파싱 => AST 생성, 인터프리터가 코드를 실행, 바이트코드 생성, 바이트코드는 인터프리터 모드일 때 바이트코드를 실행하고, JIT모드일때 컴파일러에게 보내고 이를 기반으로 기계어를 생성.

바이트코드 : 실행프로그램의 이진표현법

JIT컴파일 (just-in-time) 프로그램을 실제 실행하는 시점에 기계어로 번역하는 컴파일기법.

1. JS 특징

JS는 단일 쓰레드기반언어인 이유는 JS엔진이 단일 호출스택을 사용한다는 관점에서만 OK

JS가 구동되는 환경(브라우저, nodejs)에서는 주로 여러개의 스레드가 사용, JS엔진과 상호 연동을 위한 장치가 이벤트루프인 것

2. 동시성을 지원하는 이벤트루프

이벤트루프는 자바스크립트 엔진(V8)이 아닌 브라우저, nodejs에서 지원한다,