var num = 10;
console.log(num);
var num = 20;
console.log(num);
let num = 10;
console.log(num);
let num = 20;
console.log(num);
let num이 중복 선언되었다고 console에서 알려준다.
const number = 1;
console.log(number);
const number = 2;
console.log(number);
const num 또한 중복 선언되었다고 console에서 알려준다.
console.log(number); //undefiend
var number = 3;
자바스크립트 실행 시에 호이스팅에 의해 var로 선언된 number변수가 최상단으로 선언되기 때문에 에러가 나지 않고 undefined가 나오게 된다. 그 이유는 var로 선언된 변수는 호이스팅이 되어 초기화와 선언이 동시에 적용되기 때문에 undefiend가 나오게 된다 !
console.log(number); //number is not defined
let number = 3;
자바스크립트 실행 시에 호이스팅에 의해 let으로 선언된 number변수가 최상단으로 선언되지만 number is not defined가 나오게 된다. 그 이유는 let으로 선언된 변수는 호이스팅이 되어 선언은 되지만 초기화는 실제 let이 사용한 지점에 도착했을 때 적용이 되기 때문에 초기화 이전에 변수에 접근하는 에러가 발생한다!