스코프란 식별자(변수, 함수 이름과 같이 어떤 대상을 다른 대상과 구분하여 식별할 수 있는 유일한 이름) 접근 규칙에 따른 유효 범위를 뜻합니다.
렉시컬 스코프란 식별자 유효 범위가 함수를 호출할 때 결정되는 것이 아닌, 선언할 때 결정되는 것을 뜻합니다. 정적 스코프(Static scope)라고도 합니다. 자바스크립트는 렉시컬 스코프를 따릅니다.
var x = 'foo';
function foo() {
var x = 'bar';
bar();
}
function bar() {
console.log(x);
}
foo();
bar();
foo(); 실행 결과foo 는 함수 단위에서 var x = ‘bar’; 를 통해 x 를 다시 정의하고, bar(); 를 실행합니다.bar 함수 선언할 때 x 는 var x = 'foo'; 전역변수로 할당된 ‘foo’를 값으로 가집니다.foo(); 실행 결과는 bar 함수 선언시 x 의 값인 ‘foo’ 를 콘솔에 로그로 남깁니다.bar(); 실행 결과bar 함수 선언할 때 x 의 값인 ‘foo’ 를 콘솔에 로그로 남깁니다.