우리는 소위 JavaScript 엔진이 JavaScript 스크립트 처리를 전문으로 하는 가상 머신이라는 것을 알고 있습니다. 일반적으로 웹 브라우저에 포함되어 있으며 JavaScript 스크립트를 구문 분석하고 실행하는 데 사용됩니다. 그래서 오늘은 JS 엔진이 실행될 때 어떤 모습인지 자세히 분석해 보겠습니다.
JavaScript 가상 머신은 프로세스 가상 머신의 기능 중 하나가 ISA(Virtual Instruction Set)입니다.
가장 인기 있는 JavaScript 엔진은 물론 Google의 V8 엔진입니다. V8 엔진은 Chrome과 Node에서 사용되지만, 다른 JavaScript 엔진과 달리 V8은 JIT 컴파일러만 사용하며 JavaScript 구현을 위해 인터프리터가 필요하지 않습니다. 다음은 이들의 관계를 설명하는 간단한 다이어그램입니다.
이 엔진은 주로 두 개의 그룹으로 구성됩니다.
메모리 힙: 메모리 할당이 발생하는 곳입니다. 호출 스택: 코드가 실행되는 곳입니다
런타임
일부 브라우저 API가 자주 사용되지만(예: setTimeout) 이러한 API는 엔진에서 제공되지 않습니다. 그렇다면 그들은 어디서 왔는가? 사실 실제 상황은 조금 복잡합니다.
위 그림에서는 메인 스레드가 실행되면 힙과 스택이 생성됩니다. 스택의 코드는 다양한 외부 API를 호출하며 "taskqueue"에 다양한 events(클릭)를 추가합니다. 로드, 완료). 스택의 코드가 실행되는 동안 메인 스레드는 "작업 대기열"을 읽고 해당 이벤트에 해당하는 콜백 함수를 순서대로 실행합니다.
실행 스택(동기 작업)의 코드는 항상 "작업 대기열"(비동기 작업)을 읽기 전에 실행됩니다.
비동기 작업을 위한 이벤트를 배치하는 것 외에도 "작업 대기열"은 시간 제한 이벤트를 배치할 수도 있습니다. 즉, 특정 코드가 실행될 시간을 지정하는 것입니다.
그래서 우리는 엔진 외부에도 DOM, AJAX, setTimeout 등과 같이 브라우저에서 제공하는 웹 API라고 부르는 많은 API가 있습니다.
결론적으로 말하자면, JavaScript 엔진은 작동할 수 있는 기계이고, JavaScript 가상 머신은 이 기계의 실행 코어이고, JavaScript 런타임은 기계입니다.
이 사례를 읽으신 후 방법을 마스터하셨다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!
관련 자료:
위 내용은 JS 엔진이 실행 중일 때 어떤 모습일까요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!