let b = 1;
function hi () {
const a = 1;
let b = 100;
b++;
console.log(a,b);
}
//console.log(a);
console.log(b); // 1
hi(); // 1 101 => 실질적으로 hi안의 console.log(a,b) 실행
console.log(b); // 1
해설
1. b의 위치 : hi안에 있는 console.log(a,b)의 b는 hi라는 함수안에
b라는 변수(100)가 있기에 블록스코프를 따르는 let의 특성상
1, 101(b++때문에)출력나머지는 전역변수로 존재하는 b(1)라는 변수의 1출력
- a의 주석 해제 시 : a라는 변수는 hi라는 함수 안에 선언되어있는 변수이기에 함수의 밖에있는 console.log(a)는 a를 볼수 없기에 ReferenceError(참조 에러)가 발생
굳이 a를 보고 싶다면?
a를 함수 밖의 전역 변수로 설정하던가
retrun값으로 줘서 함수자체 출력을 하던가
a의 선언은 밖에서하고 값을 함수 안에서 주던가(이경우 함수 호출이 뒤에 있을시 undefined)
등 의 개발의도에 따라 많은 방법이 있을 듯