스코프의 정의는 “식별자 접근 규칙에 따른 유효 범위”이다.
- 식별자(변수, 함수, 클래스)에 접근할 수 있는 범위가 존재한다.
- 범위는 중괄호(블록) 또는 함수에 의해 나눠진다.
그 범위를 스코프라고 부르며, 각각을 Block Scope와 Function Scope라고 부른다.개인 정리 : 접근 범위
💎 안쪽 스코프에서 바깥쪽 스코프로 접근할 수 있지만 반대는 불가능하다.
스코프 구분
- 가장 바깥쪽의 스코프를 전역 스코프(Global Scope)라고 부른다.
- 전역이 아닌 다른 스코프는 전부 지역 스코프(Local Scope)이다.
스코프 종류
- 스코프의 두가지 종류 블록 스코프와 함수 스코프가 있다.
- 화살표 함수는 함수 스코프가 아니다.
* 주의 : 화살표 함수는 블록 스코프로 취급
- 유효 범위 : 블록 스코프 / 함수 스코프 모두 해당
- 값 재할당 : 불가능
- 재선언 : 불가능
for(let i=0; i<10; i++) { console.log(i); const a = "a"; } // 전역스코프에서 선언한 변수 a 는 존재하지 않음으로 아래에서 ReferenceErrer을 일으킨다. console.log(a); // ReferenceErrer
▶︎ let 키워드
- 유효 범위 : 블록 스코프 / 함수 스코프 모두 해당
- 값 재할당 : 가능
- 재선언 : 불가능
for(let i=0; i<10; i++) { console.log(i); } // 전역스코프에서 선언한 변수 i 는 존재하지 않음으로 아래에서 ReferenceErrer을 일으킨다. console.log(i); // ReferenceErrer
- 유효 범위 : 함수 스코프
- 값 재할당 : 가능
- 재선언 : 가능
for(var i=0; i<10; i++) { console.log(i); } // var 키워드로 선언한 변수 i 는 지역 스코프에서 선언되었지만 모든 스코프에서 접근 가능하다. console.log(i); // 9
블록 단위로 스코프를 구분했을 때, 훨씬 더 예측 가능한 코드를 작성할 수 있으므로 let과 const 키워드의 사용이 권장된다.
참조