var와 let은 모두 JavaScript에서 변수를 선언하는 키워드이다.
그러나 둘 사이에는 스코프(scope)와 호이스팅(hoisting) 등에서 차이점이 있다.
var: 함수(function)-scoped 변수
var로 선언된 변수의 스코프가 해당 변수를 포함하는 가장 가까운 함수로 제한됨.
let: 블록(block)-scoped 변수
let으로 선언된 변수의 스코프가 해당 변수를 포함하는 가장 가까운 블록(중괄호 {})으로 제한됨.
console.log(abc); // undefined
var abc = 5;
console.log(abc); // 5
console.log(def); // ReferenceError: def is not defined
let def = 5;
console.log(def); // 5
let은 변수 선언 시 스코프 관리와 잠재적 오류를 효과적으로 방지할 수 있어 현대 JavaScript에서 권장됨.
var은 이전 버전의 JavaScript 코드와의 호환성 등으로 인해 사용되지만, 가능하면 let을 사용하는 것이 좋으며, 상수인 경우에는 const를 사용하는 것이 좋음.