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);
let b / hi() 함수가 선언되며, b 변수는 TDZ으로 hi 함수는 선언, 초기화, 할당까지 진행됩니다.
그리고 1줄에서 b가 초기화 되며, 메모리에 undefined로 저장됩니다.
그리고 숫자 1이 b안으로 할당됩니다.
위에 있는 console.log(b); 에 의해서 b 변수에 있는 1을 콘솔에 찍힙니다.
그리고 hi 함수가 실행되며, 지역함수인 a에 1이 들어가게 됩니다.
그리고 지역함수 b가 undefined로 초기화되며 메모리 할당을 받고, 100을 집어넣습니다.
그리고 b에 들어있는 100에 b++로 인하여 1이 증가된 101로 바뀌게 됩니다.
다음 hi 함수 마지막줄에 있는 지역함수 a에 들어있는 1과 지역함수 b에 들어있는 101이 콘솔에 출력됩니다.
다음 전역변수 b에 있는 1이 콘솔에 출력됩니다.
출력값
1
1 101
1
출력값은 위에 값이 나오게됩니다.
만약 주석을 풀게되면 전역변수로 정해진 a가 없기 때문에, a 가 정의되지 않았다고 에러가 뜨게됩니다.