스코프(scope), 쉽게말하면 범위이다.
어떠한 식별자에 접근규칙에 따른 유효범위이기도하다.
예를들면,
for(let i=0; i<10; i++) {
console.log(i);
}
// 전역스코프에서 선언한 변수 i 는 존재하지 않음으로 아래에서 ReferenceErrer을 일으킨다.
console.log(i); // ReferenceErrer
간단하게 이정도가 되겠다. 스코프에는 몇가지 규칙이 존재하는데,
- 바깥쪽 스코프에서 선언한 식별자는 안쪽 스코프에서 사용 가능하다.
반면, 안쪽에서 선언한 식별자는 바깥쪽 스코프에서는 사용할 수 없다.- 스코프는 중첩이 가능하다.
스코프는 마치 중첩된 울타리와도 같다.- 전역 스코프와 지역 스코프
가장 바깥쪽의 스코프를 전역 스코프(Global Scope)라고 부른다.
전역이 아닌 다른 스코프는 전부 지역 스코프(Local Scope)이다.- 지역 변수는 전역 변수보다 우선순위가 더 높다.
전역 스코프에서 선언한 변수는 전역 변수이다.
지역 스코프에서 선언한 변수는 지역 변수이다.
지역 변수는 전역 변수보다 더 높은 우선순위를 가진다.
스코프의 두가지 종류 블록 스코프와 함수 스코프가 있다.
화살표 함수는 함수 스코프가 아니다.
변수 선언의 키워드 간데도 차이점이 존재하는데 다음과 간다.
- const
유효 범위 : 블록 스코프 / 함수 스코프
값 재할당 : 불가능
재선언 : 불가능- let
유효 범위 : 블록 스코프 / 함수 스코프
값 재할당 : 가능
재선언 : 불가능- var
유효 범위 : 함수 스코프
값 재할당 : 가능
재선언 : 가