JavaScript

스코프

흿짱 2023. 4. 4. 01:39

JavaScript 엔진이 참조의 대상이 되는 식별자를 검색할 때 사용하는 규칙의 집합.

어떤 변수를 사용하거나 함수를 호출하려고 할때 해당하는 식별자로 사용하는데, 그 식별자를 검색하는 메커니즘이다.

 

렉시컬 스코프 (Lexical Scope)

코드를 짤 때, 변수 및 함수/블록 스코프를 어디에 작성했는지에 따라 정해지는 스코프.

 

스코프 체인

현재 스코프에서 식별자를 검색할 때 상위 스코프를 연쇄적으로 찾아나가는 방식.

실행 컨택스트에서 생성될 때마다 Lexical Environment가 만들어지고 그 안에 outer 참조 값이 있는데, 이 outer참조 값이 상위 스코프의 Lexical Environment를 가리키기 때문에 이를 통해 체인처럼 연결되는 것이다.

스코프 체인 검사 과정

  1. 현재 실행 컨텍스트의 Lexical Environment의 Environment Record에서 식별자를 검사한다.
  2. 없으면 outer 참조 값으로 스코프 체인을 타고 올라가 상위 스코프의 Environment Record에서 식별자를 검사한다.
  3. 이를 outer 참조 값이 null일 때까지 계속 찾지 못하면 에러 발생.