console.log(a);
var a = 10; console.log(a); 가 변수의 선언보다 먼저 호출이 되었지만 선언문이 스코프의 최상단으로 끌어 올려지면서 다음 코드처럼 같이 동작.var a;
console.log(a);
a = 10;var const let 의 차이점은?let, const는 TDZ(Temporal Dead Zone. 임시 접근 불가구역)라는것을 만들어서 호이스팅이 되었지만 안된 것처럼 동작.
호이스팅으로 인해 개발자가 의도하지 않은 결과가 만들어지고, 이는 코드의 가독성과 유지보수성을 해치기 때문.
초기화 전에 TDZ에 배치된 변수에 접근하려고 하면 에러를 발생
console.log(b); // ReferenceError: Cannot access 'b' before initialization
let b = 20;