JavaScript
스코프
흿짱
2023. 4. 4. 01:39
JavaScript 엔진이 참조의 대상이 되는 식별자를 검색할 때 사용하는 규칙의 집합.
어떤 변수를 사용하거나 함수를 호출하려고 할때 해당하는 식별자로 사용하는데, 그 식별자를 검색하는 메커니즘이다.
렉시컬 스코프 (Lexical Scope)
코드를 짤 때, 변수 및 함수/블록 스코프를 어디에 작성했는지에 따라 정해지는 스코프.
스코프 체인
현재 스코프에서 식별자를 검색할 때 상위 스코프를 연쇄적으로 찾아나가는 방식.
실행 컨택스트에서 생성될 때마다 Lexical Environment가 만들어지고 그 안에 outer 참조 값이 있는데, 이 outer참조 값이 상위 스코프의 Lexical Environment를 가리키기 때문에 이를 통해 체인처럼 연결되는 것이다.
스코프 체인 검사 과정
- 현재 실행 컨텍스트의 Lexical Environment의 Environment Record에서 식별자를 검사한다.
- 없으면 outer 참조 값으로 스코프 체인을 타고 올라가 상위 스코프의 Environment Record에서 식별자를 검사한다.
- 이를 outer 참조 값이 null일 때까지 계속 찾지 못하면 에러 발생.