스코프란 식별자(변수, 함수 이름과 같이 어떤 대상을 다른 대상과 구분하여 식별할 수 있는 유일한 이름) 접근 규칙에 따른 유효 범위를 뜻합니다.
렉시컬 스코프란 식별자 유효 범위가 함수를 호출할 때 결정되는 것이 아닌, 선언할 때 결정되는 것을 뜻합니다. 정적 스코프(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’ 를 콘솔에 로그로 남깁니다.