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);
//출력 값은 1
// 1 101
// 1
- 설명
전역으로 설정한 변수 let b = 1이기 때문에 첫번째 출력값은 1이 나온다. 두번째 콘솔 값은 왜 1과 101이 출력이 되냐면 const a = 1로 할당 받고 b의 값이 1인 전역변수가 있지만 let은 block-scope이기 때문에 let b = 100이 되고 b++를 해서 101이 나오게 되는 것이다.
마지막 출력 값 1은 전역변수인 b가 있기 때문에 출력이 된다. 주석을 지우면 오류가 나오는 것은 const a = 1 도 black-scope이기 때문에 저 함수의 블럭을 벗어나면 변수가 사라지기 때문에 오류가 나오는 것이다.