Javascript

스코프(Scope)

개발따라김양 2022. 10. 12. 17:43

스코프(Scope)란?

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