자바스크립트에서 변수 선언할 때 사용되는 var, let, const는 도대체 어떤 차이점이 있을까?
간단하게 알아보았다.
var로 변수 선언을 했을 때 가장 큰 특징은 중복 선언이 가능하다는 점이다.
var a = 100;
console.log(a) // 결과값 : 100
var a = 200;
console.log(a) // 결과값 : 200
var a = 300;
console.log(a) // 결과값 : 300
위와 같이 중복 선언을 했을 때 에러가 발생하지 않고 중복 선언이 가능하다.
또한 함수 레벨 스코프로 인해 함수 외부에서 선언한 변수는 모두 전역 변수가 된다.
ES6에서는 이런 중복 선언이 가능한 문제와 전역 변수 문제를 해결하기 위해 let과 const를 추가했다.
let의 경우 변수명을 중복으로 선언하면 에러가 발생한다.
하지만 중복 선언이 아니라 재할당은 가능하다.
let name = "duru"
console.log(name) // 결과값 : duru
let name = "kim"
console.log(name) // 결과값 : error 발생
name = "kim"
console.log(name) // 결과값 : kim
const는 선언과 초기화가 동시에 진행되어야 한다.
const name; // error 발생
const name = "duru"
const는 let과 마찬가지로 재선언이 불가능하고, 재할당도 불가능하다. 재할당의 경우, 원시 값은 불가능하지만, 객체는 가능하다. const 키워드는 재할당을 금지할 뿐, ‘불변’을 의미하지 않는다.
const name = "duru"
name = "kim" // error 발생
// 객체의 재할당
const name = {
eng: "duru",
}
name.eng = "kim"
console.log(name) // 결과값 : { eng : "kim" }