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