용어
바인딩(Binding)
스코프 안에서 값이 할당·묶이는 대상입니다.
바인딩 타입
바인딩의 종류: import된 값, 대입된 값(let/const/var), export된 값, 함수·클래스 선언, 함수·메서드 인자 등.
스코프(Scope)
바인딩이 존재할 수 있는 블록입니다. 클래스, 함수, 메서드, 콜백, if/else 등 {}로 둘러싸인 코드가 해당합니다. 스코프는 계층이 있으며 부모·자식 관계가 있고, 자식이 부모와 같은 이름을 가리키면 그림자 효과(shadowing)가 납니다.
스코프 플래그
현재 스코프에 대한 메타데이터입니다(계층 상속과는 무관): 함수 여부, 생성자 여부, 최상위(프로그램) 여부 등.
심볼(Symbol)
바인딩을 감싼 것으로, 바운드 변수가 현재 소스 텍스트 안에서 어디에서 쓰였는지에 대한 참조를 담습니다. 심볼은 스캔 순서대로 ID가 부여되고, 각 참조는 그 ID로 심볼을 가리킵니다.
심볼 플래그
심볼/바인딩에 대한 메타데이터입니다.
참조(Reference)
심볼 참조는 심볼(바인딩)이 사용된 위치입니다. 스캔 순서대로 ID가 매겨지며 읽기·쓰기 또는 둘 다로 표시됩니다.
스팬(Span)
소스 텍스트에서 노드의 시작/끝 바이트 오프셋입니다.