13.1 스코프란
- 스코프 : 식별자가 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효범위
- JS엔진이 식별자를 검색할때 사용하는 규칙이라고도 할 수 있음
13.2 스코프의 종류
구분 |
설명 |
스코프 |
변수 |
전역 |
코드의 가장 바깥 영역 |
전역 스코프 |
전역 변수 |
지역 |
함수 몸체 내부 |
지역 스코프 |
지역 변수 |
13.2.1 전역과 전역 스코프
- 전역이란 코드의 가장 바깥 영역을 이야기함.
- 전역에 변수를 선언하면 전역 스코프를 갖는 전역 변수가 됨.
- 전역 변수는 어디서든지 참조할 수 있음.
13.2.2 지역과 지역 스코프
- 지역이란 함수 몸체 내부를 말함.
- 지역에 변수를 선언하면 지역 스코프를 갖는 지역 변수가 됨.
- 지역 변수는 자신의 지역 스코프와 하위 지역 스코프에서 유효함.
13.3 스코프 체인
- 스코프는 함수의 중첩에 의해 계층적인 구조를 갖음.
- 스코프 체인 : 스코프가 계층적으로 연결된 것
- JS엔진은 스코프 체인을 통해 참조하는 코드의 스코프에서 시작하여 상위 스코프로 선언된 변수를 검색
var x = 'global';
function foo() {
console.log(x); // undefined : 선언만 되고 할당되지 않음
var x = 'local';
}
foo();
console.log(x); // global
13.4 함수 레벨 스코프
- 코드 블록이 아닌 함수에 의해서만 지역 스코프가 생성됨.
- 함수 레벨 스코프 : var 키워드로 선언된 변수는 오로지 함수의 코드 블록만을 지역 스코프로 인정함.
- 함수가 아닌 코드 블록내에서 선언된 변수는 상위 스코프에 포함되므로 주의 필요
13.5 렉시컬 스코프
- 렉시컬 스코프 : 함수를 어디서 정의했는지에 따라 함수의 상위 스코프를 결정한다.
(함수 호출 위치는 상관없음)