자바스크립트 코드를 실행하는 프로그램 또는 인터프리터
<aside> 💡 인터프리터란(Interpreter)? 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경을 말한다. 원시 코드를 기계어로 번역하는 컴파일러와 대비된다. 인터프리터는 다음의 과정 가운데 적어도 한 가지 기능을 가진 프로그램이다.
</aside>
<aside> 💡 자바스크립트 엔진의 대표적인 예 Google Chrome - V8 / Apple Safari - Webkit / Mozilla Firefox - SpiderMonkey
</aside>
자바스크립트는 싱글 스레드 기반으로 하나의 콜 스택(Call Stack)과 하나의 메인 스레드를 가진다. 싱글 스레드는 한 번에 하나의 일(명령)만 처리할 수 있다는 의미이며, 그렇기 때문에 자바스크립트는 동기식(Synchronous) 언어라고 할 수 있다.
자바스크립트는 엔진에 하나의 메모리 힙과 하나의 콜 스택이 존재하는 싱글 스레드 기반의 동기식(Synchronous) 언어이므로, 다른 작업을 실행하려면 현재 작업이 끝나기를 기다려야 하는 문제점이 발생한다.
이것을 해결하기 위해 오래 걸리는 일을 백그라운드에서 처리하고, 간단하게 처리할 수 있는 작업만 콜 스택에서 수행하는 것을 런타임(Runtime)이라고 한다.
자바스크립트 안에서 실행되는 모든 함수의 호출을 기록하고 추적하는 역할.