특정 장소에 변수를 저장하고 나중에 그 변수를 찾는 데는 잘 정의된 규칙이 필요하다
이런 규칙을 스코프라 한다.
1. 1 컴파일러 이론
자바스크립트는 일반적으로 '동적' 또는 '인터프리터'언어로 분류하지만 실제로 '컴파일러 언어'다.
컴파일러 언어의 처리 과정에서는 프로그램을 이루는 소스 코드가 실행되기 전에 3단계를 거치는데
이것을 컴파일레이션이라고 한다.
토크나이징 / 렉싱
문자열을 나누어 토큰이라 불리는 의미 있는 조각으로 만드는 과정이다.
빈칸은 의미유무에 따라 토큰일수도 아닐수도 있다.
var a = 2 ( var, a, =, 2, ; )
파싱
토큰 배열을 프로그램의 문법 구조를 반영하여 중접 원소를 갖는 트리 형태로 바꾸는 과정이다.
파싱의 결과로 만들어진 트리를 AST Abstract SynTax Tree(추상 구문 트리)라 부른다.
var a = 2 의 트리는 변수 선언이라 부르는 최상위 노드에서 시작
최상위 노드는 a의 값을 가지는 확인자와 대입 수식이라 부르는 자식 노드를 가진다.
대입 수식 노드는 2라는 값을 갖지는 숫자 리터럴을 자식 노드로 가진다.
코드 생성
AST를 컴퓨터에서 실행 코드로 바꾸는 과정이다.
var a = 2 를 나타내는 AST를 기계어 집합으로 바꾸어 a라는 변수를 생성하고 값을 저장할 방법이 있다고 가정한다.
자바스크립트 엔진은 파싱과 코드 생성 과정에서 불필요한 요소를 삭제하는 과정을 거쳐 실행 시 성능을 최적화한다.
자바스크립트 엔진이 기존 컴파일러와 다른 점은 자바스크립트 컴파일레이션을 미리 수행하지 않아서 최적화할 시간이 많지 않다.
자바스크립트 컴파일레이션은 보통 코드가 실행되거 수백만 분의 일초전에 수행한다.
어떤 자바스크립트 조각이라도 실행되려면 먼저 컴파일되어야 한다.
'Programming > JavaScript' 카테고리의 다른 글
래퍼 객체 (wrapper object) (0) | 2023.03.24 |
---|---|
[Javascript] Call by value vs Call by reference (0) | 2021.10.23 |
[Javascript] 기본형과 참조형 (0) | 2021.10.17 |
스코프란 무엇인가(3) (0) | 2020.08.15 |
스코프란 무엇인가(2) (0) | 2020.08.15 |