스코프 체인이란 스코프를 안에서부터 바깥으로 검색해나가는 것이다.
outerEnvironmentReference = 실행 컨텍스트가 활성화 될 때 lexical environment가 수집하는 값 중 하나로 현재 호출된 함수가 '선언될 때'의 상위 lexical environment를 참조.
-예시
let a = funciton () {
let b = function () {
let c = function () {
...
}
}
}
```
- c의 outerEnvironment는 b의 lexical environment를 참조하고 b의 o.e는 a의 l.e를 참조한다.
- 전역 -> a -> b-> c 순으로 스코프 체인이 생성되고 작은 규모의 함수에서 접근할 수 있는 변수가 가장 많다.
- 다른 스코프에 같은 변수가 있을 경우 함수가 실행되면서 가장 먼저 발견하는 변수에만 접근 가능하다.(변수 은닉화)
### 전역변수, 지역변수
전역변수 = 전역공간에서 선언한 변수
지역변수 = 함수 내부에서 선언한 변수
cf) 전역변수들은 여러 함수에 영향을 줄 수 있기 때문에 코드의 안정성을 위해서 전역 변수 사용은 지양하는게 좋다.