var와 let의 가장 큰 차이점은 변수의 재할당이 가능하다는 것과 function-scoped, block-scoped이다. 말로만 설명하면 이해가 잘 안가니 예제 코드로 한번 살펴보겠습니다.
var은 변수 재할당을 허용하지만 let은 변수의 재할당을 허용하지 않는다.
var answer = 1;
console.log(answer); //1
var answer = 2;
console.log(answer); //2
let answer = 1;
console.log(answer)
let answer = 2; //Uncaught SyntaxError: Identifier 'answer' has already been declared
console.log(answer)
var은 function-scoped이고 let은 block-scoped이다.
function() {
if(true){
var answer = 1;
};
console.log(answer); //1
};
function() {
if(true){
let answer = 1;
}
console.log(answer) //Uncaught ReferenceError: answer is not defined
}
var은 function단위로 끊기 때문에 선언된 최상의 function에서는 어디서든 사용이 가능하다.
let은 block ({})단위로 끊기 때문에 예시를 보면 if안에서만 사용이 가능한것을 볼수 있다.