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()
안에 넣어주면 된다 😃