Javascript
스코프(Scope)
개발따라김양
2022. 10. 12. 17:43
스코프(Scope)란?
- 변수를 참조할 수 있는(접근할 수 있는) 유효한 범위
- 식별자(변수이름, 함수이름, 클래스 이름)가 유효한 범위
- 따라서 선언된 위치에 따라 유효 범위가 결정됩니다
- 전역스코프
- 전역변수, 전역스코프, 글로벌 변수, 글로벌 스코프
- 블럭 밖에서 선언된 변수
- 글로벌 변수는 앱이 종료될 때까지 계속 메모리에 유지
- 가급적 피하는 것이 좋음
- 지역스코프
- 지역변수, 로컬변수, 지역스코프, 로컬 스코프
- 블럭 안에서 선언된 변수
- 블럭 안의 변수는 블럭 안에서만 유효합니다
- 블럭 외부에서는 블럭 내부의 변수를 참조할 수 없습니다.
- 함수 외부에서는 함수 내부의 변수를 참조할 수 없습니다.
- 함수 외부에서는 함수의 매개변수를 참조할 수 없습니다.
- 스코프는 블럭 안에서 유효 범위가 결정 됨
- 참조한 변수가 해당 블럭에 없을 경우 상위 블럭을 참조함
- 이 때 가장 가까운 블럭에 있는 변수를 참조
- 참조한 변수가 해당 블럭에 없을 경우 상위 블럭을 참조함
- 이름이 충돌되는 것을 방지합니다.
- 변수가 블럭 내부에서만 존재하고, 블럭이 끝나면 Garbage Collector에 의해 자동으로 소멸됨
- 블럭이 끝난 즉시 삭제하는 것이 아니라 Garbage Collector가 주기적으로 메모리를 검사해
당시에 변수를 참조하는 블럭이 없을 경우 메모리에서 삭제 - 메모리를 절약할 수 있습니다.
- 블럭이 끝난 즉시 삭제하는 것이 아니라 Garbage Collector가 주기적으로 메모리를 검사해