728x90
정의
스코프란 자바스크립트 엔진이 참조의 대상이 되는 식별자(Identifier)를 검색할 때 사용하는 규칙의 집합이다.
즉, 어떤 변수를 사용하거나 함수를 호출하려고 할 때 식별자로 사용하는데,
그 식별자를 검색하는 매커니즘이라 생각하면 된다.
렉시컬 스코프
(정리글)
프로그래머가 코드를 짤 때, 변수 및 함수/블록 스코프를 어디에 작성하였는가에 따라 정해지는 스코프를 렉시컬 스코프라 한다.
"렉시컬(Lexical)"이라는 명칭이 붙은 이유는 자바스크립트 컴파일러가 소스코드를 토큰(Token)으로 쪼개서 의미를 부여하는 렉싱(Lexing) 단계에 해당 스코프가 확정되기 때문이다.(렉싱 타임에 정의되는 스코프)
즉, 변수 혹은 함수/블록이 어디에 써있는가를 보고 그 스코프를 판단하면 된다.
스코프 체인
현재 스코프에서 식별자를 검색할 때 사우이 스코프를 연쇄적으로 찾는 방식이다.
실행 컨택스트애서 생성될 때마다 Lexical Environment 가 만들어지고, 그 안에 outer같은 참조값이 있다.
이 outer 참조 값이 상위 스코프의 Lexical Environment를 가르키기 때문에 이를 통해 체인처럼 연결되어 있다.
즉, 스코프 체인 검색은 다음과 같은 과정으로 이루어 진다.
- 현재 실행 컨텍스트의 Lexical Environment의 Environment Record에서 식별자를 검색
- 없다면 outer 참조 값으로 스코프 체인을 타고 올라가 상위 스코프의 Environment Record에서 식별자 검색
- 이를 outer 참조 값이 null이 될 때 까지 계속해서 찾아보고 없다면 에러를 발생시킨다.
728x90
'JavaScript > Javascript' 카테고리의 다른 글
this 바인딩 (0) | 2023.09.22 |
---|---|
호이스팅 (0) | 2023.09.21 |
실행 컨텍스트 Execution Context (2) | 2023.09.21 |
이벤트 위임 (0) | 2023.09.18 |
AJAX (0) | 2023.09.11 |