var name = 'Mike';
console.log(name); // Mike
var name = 'Jane';
console.log(name); // Jane
console.log(name); //undefined
var name = 'Mike';
console.log(name); // ReferenceError
let name = 'Mike';
스코프 내부 어디서든 변수 선언은 최상위에 선언된 것 처럼 행동
TDZ는 함수 할당 전 값을 참조할 수 없는 영역을 뜻 합니다.
var
1. 선언 및 초기화 단계 // 초기화 : undefined를 할당 해주는 단계
2. 할당 단계
let
1. 선언 단계
2. 초기화 단계
2. 할당 단계
const
1. 선언단계 + 초기화단계 + 할당단계
개발 시 const 사용을 권장하며, 값의 재 할당이 필요한 경우 let을 사용합니다.
var는 사용하지 않는 것을 권장 합니다. var를 사용 시 값의 예측이 어려워 지게 됩니다.