15장. let, const키워드와 블록 레벨 스코프
- var : 중복 선언 가능, 함수 레벨 스코프
- let, const : 중복 선언 금지, 블록 레벨 스코프
- const : 선언과 동시에 초기화를 해야한다, 재할당 금지
함수 레벨 스코프
함수 레벨 스코프는 오로지 함수의 코드 블록만을 지역 스코프로 인정한다.
변수 호이스팅
함수에 선언된 변수들이 함수 유효 범위의 최상단으로 끌어올려지는 것
- var : 선언 + undefined 초기화
- let, const : 선언만 끌어올려짐 (개발자가 선언과 초기화를 따로 한 경우 선언시점에 undefined로 초기화 된다.)
let, const는 초기화가 되지 않았으므로 참조할 수 없어서 선언 이전에 호출하면 TDZ에 의해 ReferenceError가 발생한다.
- TDZ(Temporal Dead Zone) : 스코프의 시작 지점부터 초기화 시작지점까지 변수를 참조할 수 없는 구간
let foo;
console.log(foo); // undefined
foo = 1;
console.log(foo); // 1
- 결과