
let b = 1;
function hi () {
const a = 1;
let b = 100;
b++;
console.log(a,b);
}
//console.log(a);
console.log(b);
hi();
console.log(b);
console.log(b)의 값은 1로 예상한다let b = 1 때문이다.function hi()안의 let b = 100은 함수 내에 지역 변수로 설정되어있기 때문에 함수 밖에는 영향을 끼치지 못한다.console.log(b)의 값 또한 1로 예상한다.let b = 1;
function hi() {
const a = 1;
let b = 100;
b++;
console.log(a, b);
}
console.log(a);
console.log(b);
hi();
console.log(b);
//ReferenceError: a is not defined
console.log(a)의 주석을 풀었더니 ReferenceError: a is not defined가 출력됐다.
a가 선언된 지점은 hi()함수 내에 지역변수로 설정이 되어있는데, global context에서 a를 호출하였고, 여기서 const변수의 호이스팅이 일어나게된다.
const변수의 호이스팅은 선언 && 초기화 && 할당이 동시에 이루어져야 하는데, 여기서는 선언만 되어있고 초기화 및 값이 할당되어있지 않기 때문에 Reference Error가 출력되는 것이다.
let b = 1;
function hi() {
const a = 1;
let b = 100;
b++;
console.log(a, b);
console.log(a); // 전역 변수 a 호출
}
console.log(b);
hi();
console.log(b);
이렇게 a를 호출하는 부분을 hi()안에 넣어주면 된다 😃