변수의 유효 범위인 Scope와 Scope Chain

이주희·2022년 3월 20일
0

CS

목록 보기
2/66

Scope

변수에는 유효 범위가 있다.
변수와 같은 식별자에 대한 유효 범위를 스코프라고 한다.
이런 유효범위는 전역 공간과 지역 공간으로 나뉘며, 이에 따라 변수도 전역 변수와 지역 변수로 나뉜다.

Global variable

전역 변수
말 그대로 스크립트 영역 어디에도 힘을 발휘할 수 있는 변수이다.
변수가 어떤 블록에도 들어가있지 않을 경우 전역변수이다.

Local variable

지역 변수
정해진 영역에서만 힘을 발휘하는 변수이다.
보통 블록{} 안이나, 함수 안에서만 변수에 접근할 수 있다.

Scope Chain

식별자의 유효 범위, 즉, scope를 안에서부터 밖으로 검색해 나가는 것을 scope chain이라고 한다.

특정 변수나 함수를 사용하려고 할 때,
먼저 자신이 속한 중괄호 안에서 해당하는 변수가 있는지 찾고, 없으면 바깥쪽의 가장 가까운 중괄호 안에서부터 찾는다.

var a =1;  //전역공간 변수 
var outer = function () {
    var inner = function () {
        console.log(a)   ---------> //undefinde
        var a =3  //지역변수 
    }
    inner()
    console.log(a)   ----------> //결과 1
}
outer()
console.log(a)   -----------> //결과 1

컨텍스트는 해당 코드의 외부 환경 정보를 수집해올 때 scope chain이 발생한다.

바로 위 식별자의 Environment를 참조해오기 때문에 위 예제에서 a가 1이 된다.
1. 먼저 outer가 외부 환경의 정보를 수집하는 과정에서 전역 공간의 변수 a를 수집해온다.
2. 다음으로 innerouter의 Environment를 참조해서 외부환경의 정보를 수집해온다.

그렇게 전역 공간의 a를 가져오게 되는 것이다.

이렇게 바로 위 식별자의 Environment를 참조하는 것이 scope chain이다.

profile
🍓e-juhee.tistory.com 👈🏻 이사중

0개의 댓글