변수 let, var, const의 특징
var
- 선언과 초기화가 동시에 이뤄진 후에 할당이 진행된다
그러므로 할당 전에 호출하면 undefined가 출력된다 
- 재선언이 가능하다
 
var name = 'me';
console.log(name);	// me
var name = 'you';
console.log(name);	// you
- var은 선언 전에 사용할 수 있다(선언은 hoisting되나, 할당은 되지 않는다)
 
console.log(name);	// undefined
var name = 'me';
- 함수 스코프
함수 내에서 선언되면 외부에서 참조하지 못한다 
let
- 선언, 초기화, 할당이 각자 따로 진행된다
호이스팅으로 선언되지만 초기화는 실제 코드에 도달해야 진행되므로 레퍼런스 에러가 뜬다 
- 재선언이 불가능하다
 
let name = 'me';
console.log(name);	// me
let name = 'you';	// error
- 블럭 스코프
함수 뿐만 아니라  if, for과 같은 블럭 내에서 선언되면 외부에서 참조하지 못한다 
const
const name;	// error
name = 'me';