스코프
- 스코프 = 식별자 유효범위
- 모든 식별자는 자신이 선언된 위치에 따라 유효 범위가 결정된다
- 폴더와 같은 역할을 수행(위치가 서로 다르기 때문에 같은 이름이여도 상관이 없다)
스코프의 종류
전역과 전역스코프
- 어디서든지 참조 가능
- 전역: 전역스코프 형성
- 전역변수: 전역스코프의 변수
지역과 지역스코프
- var 태그 함수 몸체 내부(함수레벨스코프)
- let, const 태그 블록 단위(블록레벨스코프)
- var는 함수 내부를 제외하면 모든 변수가 전역변수
- let, const 모든 블록 단위안의 변수는 지역변수
function a(){
var b=0;
}
for(var a=0; ;)
function b(){
let c=0;
}
for(let b=0; ;)
- 지역: 지역스코프 형성
- 지역변수: 지역스코프의 변수
- 지역변수는 자신의 지역스코프와 하위 지역스코프에서 유효
스코프체인
- 스코프가 함수의 중첩에 의해 계층적구조를 갖는 것
- 스코프의 계층: 스코프체인
- 계층
- inner 지역스코프 -> outer 지역스코프 -> 전역스코프
- 모든 지역 스코프의 최상위는 전역스코프이다
let x =3;
function a(){
function b(){
console.log(x);
}
}
렉시컬 스코프
- 동적스코프
- 함수를 어디서 호출했는지에 따라 상위 스코프가 결정
- 렉시컬스코프(정적스코프)
- 함수 정의가 평가되는 시점에 상위 스코프를 결정