처음 코드를 실행(브라우저가 스크립트를 로딩해서 실행하는 것)하는 순간 모든 것을 포함하는 전역 컨텍스트가 생긴다.
전역 컨텍스트는 모든 것을 관리하는 환경으로, 페이지가 종료될 때까지 유지된다.
함수를 선언할 때 만들어진 scope가 사라진 후에도 scope에 저장되었던 변수를 사용할 수 있는 함수
-> 어떤 함수 A에서 선언한 변수 a를 참조하는 내부함수 B를 외부로 전달할 경우, A의 실행 컨텍스트가 종료된 이후에도 변수 a가 사라지지 않는 현상
클로저를 통한 은닉화
-> 클로저를 사용하여 외부에서 변수에 직접 접근하는 것을 제한할 때 사용한다.
변수가 유효한(살아있는) 범위
Global Scope
- 코드 어디에서든지 참조 가능
- var로 선언한 변수는 전역 객체에 속하게 된다.
Local Scope
- scope의 범위는 함수 블록 내이다. ({} 블록과 상관이 없다) = 함수에 의해서만 scope가 생성된다.
- let, const로 변수를 선언할 때의 scope의 범위는 블록({}) 단위이다.
스코프 체인
- 변수가 해당 scope에서 유효하지 않을 때, 안에서부터 바깥으로만 차례로 검색해 나가는 것