[JavaScript] var, let, const 차이
앞 포스팅에서 다룬 var의 문제들로 인해 ES6에서는 let과 const라는 새로운 문법을 소개했다.
let과 const 는 전에 말한 var의 3가지 문제를 개선한 문법이라고 보면 된다.
📌 var와 구별되는 let, const의 특징
1. 같은 이름의 변수를 중복 선언할 수 없다.
2. 함수스코프가 아닌 블록스코프이다.
스코프, 함수스코프, 블록스코프 알아보기 👉👉 https://guun-oni.tistory.com/80
3. 호이스팅이 발생하지만 초기화되지는 않는다.
>> var와 마찬가지로 선언이 맨 위로 끌어올려지는 호이스팅이 발생하지만
var 변수는 undefined(정의되지 않음)으로 초기화되고,
let과 const 변수는 초기화되지 않아 선언 이전에 변수를 사용하려고 시도하면 reference error 오류가 발생한다.
📌 let과 const의 차이
같은 블록 범위를 가지는 let과 const의 차이는 업데이트의 될 수 있는가 없는가이다.
let 은 선언 후 나중에 업데이트가 될 수 있지만, (업데이트 == "재할당" or "재정의" or "mutable")
let num = "One";
name = "Seven";
const 는 선언 후 업데이트가 될 수 없다. (Immutable)
또한 처음 선언 시 무조건 값이 초기화가 되어야한다.
const num = "One";
const name; //ERROR
const로 선언된 객체는 업데이트할 수 없지만 객체의 '속성=프로퍼티'는 업데이트 할 수 있다.
(객체 변수에 할당된 주소 값을 변경할 수 없는 것)
const person = {
name : "Koo",
age : "20"
}
person.age = 30; // 가능
👉 So!
재할당이 필요없는 상수와 객체는 const를 사용하는 것이 좋다. 의도치 않은 재할당을 방지해준다.
재할당이 필요한 경우에는 let을 사용하면 된다.