엔진의 역할을 맡아서 스코프와 대화해 보자
function foo(a) {
var b = a;
return a + b;
}
var c = foo(2);
c 에 대한 참조를 구해야 하는데 아니?foo함수 내에서 파라미터에 대입할 a 에 대한 참조를 구해야 하는데 아니?b 에 대한 참조를 구해야 하는데 아니?foo 에 대한 값을 찾아 줘b 에 대입할 건데 a 에 대한 값을 찾아 줘a 에 대한 값을 찾아 줘b 에 대한 값을 찾아 줘스코프는 확인자 이름으로 변수를 찾기 위한 규칙의 집합
LHS와 RHS를 구분하는 것이 왜 중요할까? 동작이 다르기 때문
function foo() {
console.log(a + b);
b = a;
}
foo(2);
렉시컬 스코프는 렉싱 타임에 정의되는 스코프다. 프로그래머가 코드를 짤 때 변수와 스코프 블록을 어디서 작성하는 가에 따라 기초해서 렉서가 코드를 처리할 때 확정 된다.
렉시컬 스코프 검색 과정은 일차 확인자 검색에만 적용된다. 예를 들어 foo.bar.baz의 참조를 찾는다고 하면 렉시컬 스코프 검색은 foo 확인자를 찾는 데 사용 되지만 일단 foo를 찾고 나서는 객체 속성 접근 규칙을 통해 bar와 baz를 찾는다.