코드는 전역과 지역으로 구분할 수 있다.
구분 | 설명 | 스코프 | 변수 |
---|---|---|---|
전역 | 코드의 가장 바깥영역 | 전역스코프 | 전역변수 |
지역 | 함수 몸체 내부 | 지역스코프 | 지역변수 |
1.블록 레벨 스코프 범위 결정: {..}
(ES6의 화살표 함수는 블록 스코프로 취급된다.)
2.함수 레벨 스코프 범위 결정: 함수
스코프는 함수의 중첩에 의해 계층적 구조를 갖는다.
변수 선언 키워드 세 가지의 ‘차이점’ 그리고 ‘스코프 유효 범위’는 아래와 같다.
const 키워드
유효 범위 : 블록 스코프 / 함수 스코프
값 재할당 : 불가능
재선언 : 불가능
let 키워드
유효 범위 : 블록 스코프 / 함수 스코프
값 재할당 : 가능
재선언 : 불가능
var 키워드
유효 범위 : 함수 스코프
값 재할당 : 가능
재선언 : 가능
블록 스코프 안에서 let과 const 키워드로 선언한 변수는 스코프 안에서만 참조 가능하다.
그런데 var 키워드로 선언한 변수는 블록 스코프를 무시하고 스코프 밖에서도 접근 가능하다. (var는 오직 함수 스코프만 따른다.)
--> 그러나 블록 단위로 스코프를 구분했을 때, 훨씬 더 예측 가능한 코드를 작성할 수 있으므로 let과 const 키워드의 사용이 권장된다.