var는 변수의 재할당을 허용하지만, let은 허용하지 않는다.
아래의 예제 코드를 통해 조금 더 자세히 확인해 보면...
var a = '1';
var a = '2';
console.log(a); // 2
let b = '1';
let b = '2'; // Uncaught SyntaxError: Identifier 'b' has already been declared
'b'가 이미 선언되어 있다고 문법에러를 보여준다. 🙀 따라서 let을 사용하는 편이 같은 이름의 변수를 무심코 사용해 버린다던가, 변수가 예상 외의 값이 할당되는 등의 버그가 발생하기 쉬운 가능성을 줄여준다.
let이 var보다 세세하게 변수의 유효범위를 관리할 수 있다.
아래 예제 코드를 보면...
// var 사용
if (true) {
var i = 1;
}
console.log(i) // 1
// let 사용
if (true) {
let i = 1;
}
console.log(i); // Uncaught ReferenceError: i is not defined at <anonymous>:5:13
var 키워드를 사용한 if문의 변수 i는 블록 스코프 '{}' 의 밖에서도 참조 가능하다!
반면, let 키워드를 사용한 if문의 변수 i는 블록 스코프 밖에서 참조하려고 하면 레퍼런스 에러를 보여준다! ☺️