본문 바로가기

프론트엔드

Scope 스코프

Scope란?

자바스크립트 엔진이 참조의 대상이 되는 식별자를 검색할 때 사용하는 규칙의 집합이다.
즉, 어떤 변수를 사용하거나 함수를 호출하려고 할 때 그 식별자를 검색하는 구조라고 이해하면 된다.

 

Lexical Scope 렉시컬 스코프

렉시컬 스코프는 변수, 함수의 스코프이다. 변수, 함수를 어디에 썼는가를 보고 그 스코프가 판단이 된다.

 

Scope chain 스코프 체인

현재 스코프에서 식별자를 검색할 때 상위 스코프를 연쇄적으로 찾아나가는 방식을 말한다.
실행컨텍스트가 생성될 때 마다 Lexical Environment가 만들어지고, 그 안에 밖을 참조하는 outer 참조값이 있는데, 이 outer 참조값이 상위 스코프의 Lexical Environment를 가리키기 때문에 체인처럼 연결이 된다.

 

Scope 판단순서

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

 


* 실행 컨텍스트 참고 *

https://joannashin.tistory.com/123

 

Execution Context 실행 컨텍스트

Execution Context 1. Execution Context란? 💡 자바스크립트 코드가 실행되고 연산되는 범위를 나타내는 추상적인 개념. 코드들이 실행되기 위한 환경이자 하나의 컨테이너라고 볼 수 있다. 2. 자바스크립

joannashin.tistory.com

 

반응형