자바스크립트의 기본이라고 할 수 있는 변수에는 유효 범위가 있다.
변수와 같은 식별자에 대한 유효 범위를 스코프라고 한다.
이런 유효범위는 크게 전역공간과 지역공간으로 두 가지로 나뉘며,
이에따라 변수 또한 전역변수와 지역변수로 나뉜다.
전역 변수
스크립트 영역 어디에도 힘을 발휘 할 수 있는 변수
지역 변수
정해진 영역에서만 힘을 발휘하는 변수
보통 블록{} 안이나, 함수 안에서만 변수에 접근 할 수 있다.
식별자의 유효범위, 즉 스코프를 안에서부터 밖으로 검색해 나가는 것을 스코프 체인이라고 한다.
스코프 체인의 예제.
var a =1; //전역공간 변수
var outer = function () {
var inner = function () {
console.log(a) ---------> //undefined
var a =3 //지역변수
}
inner()
console.log(a) ----------> //결과 1
}
outer()
console.log(a) -----------> //결과 1
컨텍스트는 해당 코드의 외부환경정보를 수집해올 때 스코프 체인이 발생한다.
여기서 console.log(a)는 모두 1을 출력한다.
위 코드의 작동과정을 살펴보자.
먼저 outer()가 외부환경의 정보를 수집하는 과정에서 전역공간의 변수 a를 수집한다.
다음으로 outer() 내부의 inner()가 작동하면서
outer()의 Enviroment를 참조해 외부환경의 정보를 수집한다.
따라서 전역공간의 var a = 1를 참조해
1을 출력하게 된다.
이처럼 바로위 식별자의 Enviroment를 참조하는 것이 스코프 체인이다.