변수 호이스팅은 엄격히 지양된다. 함수 호이스팅과 관련해서는 아래의 예제를 보며 고민해보자.
function onClickButton () {
getData();
}
function getData () {
}
let은 재선언은 불가, 재할당은 가능! const는 둘 다 불가
let name = '찰스';
let name = '김보인';
console.log(name); // 에러발생('name' has already been declared)
let num = 100;
num = 1;
console.log(num); // 1이 출력됨(let은 재할당 가능)
const num2 = 100;
num2 = 1;
console.log(num2); // 에러발생(Assignment to constant variable)
let global = '전역';
if (global === '전역') {
let global = '지역';
console.log(global); // '지역'이 출력됨
}
console.log(global); // '전역'이 출력됨
// const도 동일한 결과가 출력됨
let과 const는 변수 호이스팅 불가
console.log(num); // 에러발생(Cannot access 'num' before initialization)
let num;
num = 6;
// const도 동일한 결과가 출력됨