Scope란?
자바스크립트 엔진이 참조의 대상이 되는 식별자를 검색할 때 사용하는 규칙의 집합이다.
즉, 어떤 변수를 사용하거나 함수를 호출하려고 할 때 그 식별자를 검색하는 구조라고 이해하면 된다.
Lexical Scope 렉시컬 스코프
렉시컬 스코프는 변수, 함수의 스코프이다. 변수, 함수를 어디에 썼는가를 보고 그 스코프가 판단이 된다.
Scope chain 스코프 체인
현재 스코프에서 식별자를 검색할 때 상위 스코프를 연쇄적으로 찾아나가는 방식을 말한다.
실행컨텍스트가 생성될 때 마다 Lexical Environment가 만들어지고, 그 안에 밖을 참조하는 outer 참조값이 있는데, 이 outer 참조값이 상위 스코프의 Lexical Environment를 가리키기 때문에 체인처럼 연결이 된다.
Scope 판단순서
- 현재 실행 컨텍스트의 Lexical Environment에서 식별자를 검색한다.
- 없으면 outer 참조값으로 스코프 체인을 타고 올라가 상위 스코프에서 식별자를 검색한다.
- outer 참조값이 null일때까지 상위 스코프에서 찾는 것을 계속한다.
- 결국 찾지 못하고 null이 나온다면 에러를 발생시킨다.
* 실행 컨텍스트 참고 *
https://joannashin.tistory.com/123
Execution Context 실행 컨텍스트
Execution Context 1. Execution Context란? 💡 자바스크립트 코드가 실행되고 연산되는 범위를 나타내는 추상적인 개념. 코드들이 실행되기 위한 환경이자 하나의 컨테이너라고 볼 수 있다. 2. 자바스크립
joannashin.tistory.com
반응형
'프론트엔드' 카테고리의 다른 글
Closure 클로져 (0) | 2022.11.04 |
---|---|
Hoisting 호이스팅 (0) | 2022.11.02 |
Event Loop 이벤트 루프 (태스크큐 & 마이크로 태스크 큐) (0) | 2022.11.02 |
Javascript 메모리 개념 (V8엔진 & 콜스택Call Stack & 힙Heap) (0) | 2022.11.02 |
http1.1 와 http2 (0) | 2022.11.01 |