1. Javascript 엔진이란?
Javascript 엔진은 Javascript 코드를 해석하고 실행하는 소프트웨어이다. Javascript 코드를 파싱 후 컴파일하고 실행해서 브라우저나 그 외 환경에서 Javascript 프로그램을 실행할 수 있게 해준다. 주요 Javascript 엔진으로는 Google의 V8, Mozilla SpiderMonkey, Safari의 Webkit 등이 있다. 이 Javascript 엔진이 Javascript 코드를 실행하는 것이다.
2. Javascript 엔진이 Javascript코드를 해석하고 실행하는 과정
1) 파싱(Parsing)
Javascript 코드를 실행하려면 Javascript 엔진이 이해할 수 있게 파싱이 선행되어야 한다. 파싱이란 코드가 토큰화되고 문법적 구조를 파악하는 것인데, 이렇게 코드가 파싱되면, Abstract Syntax Tree (AST)라고 하는 데이터 구조로 변환된다. 이것은 코드의 구문을 표현하는 트리 형태의 구조이다.
2) 컴파일(Compile)
몇몇 Javascript 엔진은 파싱된 코드를 바이트코드 또는 중간코드로 변환한다. 이러한 과정은 코드 실행 전, 최적화 과정을 거치는 것이다. 이렇게 중간코드 과정을 거치지 않는 엔진은 직접 인터프리트 해서 실행한다. 이 이전에 파싱된 코드를 바로 실행하는 것이다.
3) 실행(Execution)
이 단계에서 이 전에 컴파일되거나 인터프리트된 코드를 실행한다. 실행 단계에서는 변수, 함수, 객체 등의 메모리 공간이 할당되고 값이 변경됩니다. 엔진은 AST를 탐색하며 코드를 실행하고, 변수를 할당하고, 함수를 호출하고, 객체를 조작합니다. 실행 단계에서 스코프, 클로저, 실행 컨텍스트 등과 같은 JavaScript의 동적인 특성을 처리합니다.
4) 최적화
어떤 엔진은 코드 실행 중에 최적화를 수행한다. 이는 코드를 더 빠르게 실행하기 위해 수행되는데 최적화는 실행 시간에 인식되는 패턴을 기반으로 하며, 코드를 재구성하거나 인라인화하여 성능을 향상시킵니다.
5) 메모리 관리
Javascript 엔진은 동적으로 메모리를 할당하고 관리한다. Javascript의 코드에 따라 메모리를 할당하거나 해제하는데 이는 객체 생성 및 제거, 가비지 콜렉팅 등을 포함한다. 더 이상 사용되지 않는 메모리는 가비지 콜렉터에 의해 회수되어 메모리 누수를 방지한다.
'개발지식' 카테고리의 다른 글
[Javascript] 자바스크립트 모듈에 대해 (0) | 2024.03.20 |
---|---|
[Javascript] Babel과 트랜스파일링 (0) | 2024.03.18 |
[Javascript] 메모리 누수를 방지하는 방법 (0) | 2024.03.08 |
[Javascript] Promise가 어떻게 동작하는가? (0) | 2024.03.07 |
[Javascript] 스코프 체이닝이란 무엇인가? (1) | 2024.03.05 |
댓글