범위라는 뜻을 갖고있다. '변수에 접근할 수 잇는 범위'
우리가 변수 혹은 함수를 선언하게 될 때 해당 변수 또는 함수가 유효한 범위를 의미
전역에 선언되어있는 어느 곳에서든지 해당 변수에 접근할 수 있다.
해당 지역에서만 접근할 수 있고, 지역을 벗어난 곳에서는 접근할 수 없다.
함수를 선언하면 함수를 선언할 때마다 새로운 스코프를 생성하게 된다.
함수 몸체에 선언한 변수는 해당 함수 몸체 안에서만 접근할 수 있다.
이걸 함수 스코프(function-scoped)라고 한다.
함수 스코프가 바로 지역 스코프의 예라고 할 수 있다.
let a = 1; // 전역 스코프
function print() { // 지역(함수) 스코프
let a = 111;
console.log(a);
}
print();
console.log(a);
위에 print를 호출한다면 답은 뭐로 나올까?
print 함수를 호출하면 111이 출력되는 것을 볼 수 있다.
만약 print함수에서 a를 지운다면 a는 뭐라고 찍힐까 ?
1이 찍힐 것이다.
이것은 Scope Chain에 의해 일어나는 현상이다.
현재 자신의 scope에서 사용하고자 하는 변수가 없다면 Scope Chain을 통해 해당 변수를 찾게된다.
출처