#1 스코프란?
- 식별자가 유효한 범위
- 자바스크립트 엔진이 식별자를 검색할 때 사용하는 규칙
식별자란 어떤 값을 구별하여 식별할 수 있는 고유한 이름이다. 변수나 함수의 이름을 식별자라고 한다.
#2 스코프의 종류
전역과 전역스코프
전역이란 코드의 가장 바깥영역이다. 전역에 변수를 선언하면 전역변수가 된다. 전역변수는 어디서든지 참조할 수 있다.
지역과 지역스코프
지역이란 함수 몸체 내부이다. 지역변수는 자신의 지역 스코프와 하위 지역 스코프에서 유효하다.
#3 스코프 체인
- 정의: 스코프가 계층적으로 연결 된 것
- 스코프체인은 물리적으로 렉시컬환경(lexical environment)라는 자료구조로 구현된다.
- 변수참조시 자바스크립트 엔진은 스코프체인에서 참조되는 위치부터 시작해서 상위 스코프 방향으로 이동하며 선언된 변수를 검색한다.
#4 함수 레벨 스코프
- 블록(block) 레벨 스코프: 코드 블럭에 의해서 지역 스코프가 생성됨
- 함수 레벨 스코프: 오로지 함수의 코드 블록만을 지역 스코프로 인정
자바스크립트 엔진에서 식별자는 함수 레벨 스코프이다. 반면에 java, C의 경우, if문, while문 까지 코드 블럭을 스코프로 본다.
#5 렉시컬 스코프
- 동적 스코프: 함수를 어디서 호출했는지에 따라 함수의 상위 스코프 결정
- 정적 스코프: 함수를 어디서 정의했는지에 따라 함수의 상위 스코프 결정
자바스크립트 엔진은 정적 스코프를 따른다.
참고문헌
https://product.kyobobook.co.kr/detail/S000001766445