기술 면접 정리/자바스크립트

자바스크립트 엔진

테오구 2022. 4. 15. 10:32
728x90

자바스크립트 코드가 동작하기 위해서는 브라우저 자체에 내장되어져 있는 자바스크립트 엔진이 필요 합니다.

자바스크립트가 실행되는 시간 즉 런타임 시간에 동작하는 과정에서 코드를 한 줄 한 줄 읽어줍니다.(이를 인터프리터라고 합니다.)

보통 다른 언어에서는 컴파일러가 필요한데 컴파일러가 동작하는 방식을 자바 프로그래밍으로 예를 들면

코드를 컴퓨터에서 실행하기 위해서는 자바코드를 컴파일러를 통해 모든 코드를 컴파일링해서 컴퓨터가 이해할 수 있는 언어로 변경을 해주고 컴퓨터에서 실행을 해줍니다.

즉 둘의 차이점은

컴파일러는 모든 코드를 번역해놓고 코드를 실행하는 것이고 인터프리터는 코드를 진행하면서 한줄씩 번역해서 실행하는 것

인터프리터의 장단점

장점: 초반 실행하는 속도는 빠릅니다.

단점: 비교적 실행 속도가 느려질 수 있다.

컴파일러의 장단점

장점: 한 번 실행 파일을 만들어둬서 실행을 할 때는 빠르게 실행할 수 있습니다.

단점: 모든 코드를 컴파일링 해야하기 때문에 시간이 오래 걸릴 수 있습니다.

 

자바스크립트 엔진이 코드를 실행하는 과정

  • 소스코드를 만나면 파싱하여 AST(Abstract Syntax Tree) 로 변환한다.
  • **인터프리터(Interpreter)**는 AST를 기반으로 바이트코드를 생성합니다.
  • 인터프리터가 바이트코드를 실행할 때, 자주 사용되는 함수 및 타입 정보 등이 있는 **파일링 데이터(Profiling data)**와 같이 **최적화 컴파일러(Optimizing compiler)**에게 보낸다.
  • 최적화 컴파일러는 프로파일링 데이터를 기반으로 최적화된 코드(Optimized code)를 생성한다.
  • 하지만, 프로파일링 데이터 중에 잘못된 부분이 있다면 최적화(Deoptimize) 해제를 하고 다시 바이트코드를 실행해서 이전 동작을 반복한다.
728x90

'기술 면접 정리 > 자바스크립트' 카테고리의 다른 글

구조분해 할당  (0) 2022.04.21
이벤트 루프  (0) 2022.04.15
preventDefault(); 와 stopPropagation(); 차이  (0) 2022.04.12
접근 제어자  (0) 2022.04.03
static  (0) 2022.04.02