엔진은 크게 2가지 요소가 있다.
거의 모든 자바스크립트 개발자들이 setTimeout과 같은 브라우저 내장 API를 사용합니다.
이 API는 자바스크립트 엔진에서는 제공하지 않습니다.
자바스크립트는 기본적으로 싱글 쓰레드 기반 언어입니다.
호출 스택은 하나입니다. 따라서 한 번에 한 작업만 처리할 수 있습니다.
호출 스택은 기본적으로 우리가 프로그램 상에서 어디에 있는지를 기록하는 자료구조입니다. 만약 함수를 실행하면(실행 커서가 함수 안에 있으면), 해당 함수는 호출 스택의 가장 상단에 위치하는 거죠. 함수의 실행이 끝날 때(리턴 값을 돌려줄 때), 해당 함수를 호출 스택에서 제거합니다. 그게 스택의 역할입니다.
호출 스택의 각 단계를 스택 프레임(Stack Frame)이라고 합니다.
보통 예외가 발생했을 때 콘솔 로그 상에서 나타나는 스택 트레이스(Stack Trace)가 오류가 발생하기까지의 스택 트레이스들로 구성됩니다. 간단히 말해서 에러가 났을때의 호출 스택의 단계를 의미하는 겁니다.
호출 스택이 최대 크기가 되면 스택 날려 버리기가 일어납니다. → overflowing
호출 스택에 처리 시간이 어마어마하게 오래 걸리는 함수는 있으면, 호출 스택에서 해당 함수가 실행되는 동안 브라우저에서는 아무 작업을 못하고 대기상태가 될 수 있습니다.