이제 대망의 마지막인 const에 대해 살펴보도록 하자.
우선 const는 let과 대부분 동일하다(블록 레벨 스코프를 가지고, 변수 호이스팅과 TDZ를 가진다). 그 중 const 고유의 특징이라고 여겨지는 부분들에 대해 살펴보자.
[ const의 특징 - 1 ] 선언과 초기화
const 키워드로 선언한 변수는 반드시 선언과 동시에 초기화를 해야한다. 이 부분은 let과 다른 부분이다. 다음의 예시를 살펴보자.
let x;
console.log(x); // undefined
x = 20;
console.log(x); // 20
const x; // Uncaught SyntaxError: Missing initializer in const declaration
[ const의 특징 - 2 ] 재할당 금지
const로 선언한 변수는 상수이므로 재할당이 허용되지 않는다.
const x = 20;
console.log(x); // 20
x = 20; // Uncaught TypeError: Assignment to constant variable.
[ const의 특징 - 3 ] const 키워드와 객체
const로 선언한 변수에 원시값(숫자타입, 문자열타입, 불리언타입, undefined타입, null타입, Symbol타입)을 할당한 경우에는 불변하는 원시값의 특징과 재할당이 불가능한 const의 특성 때문에 상수(변경이 불가능한 항상 일정한 값)가 된다. 반면에, const로 선언한 변수에 객체를 할당하는 경우에는 해당 객체의 프로퍼티 키에 해당하는 값을 변경하거나, 새로운 프로퍼티 키와 값을 생성할 수 있다. 왜냐하면 객체는 변경가능하기 때문이다.
const obj = {
x: 10,
y: "비둘기",
z: "apple"
}
console.log(obj); // {x: 10, y: '비둘기', z: 'apple'}
obj.z = "오렌지";
console.log(obj); // {x: 10, y: '비둘기', z: '오렌지'}
obj.w = "new";
console.log(obj); // {x: 10, y: '비둘기', z: '오렌지', w: 'new'}
따라서 const 키워드는 재할당을 금지할 뿐 "불변"을 의미하는 것은 아니다.
[ 요약 ]
const는 let과 대부분 유사하지만, let과는 다른 const만이 가지는 특징이 있다. 그 특징은 크게 2가지로 나누어 볼 수 있다.
1. 선언과 초기화
- const는 let과 다르게 변수 선언과 동시에 초기화를 진행하여야 한다.
2. 재할당 금지
- const로 선언한 변수는 let과 달리 재할당이 불가능하다(재할당이 불가능한 것이지 불변한 것은 아니다).
이로써 var vs. let vs. const 비교 분석 글을 마치고자 한다.
긴 글 읽어주셔서 감사합니다.
[ 참고 자료 ]
모던 자바스크립트 딥다이브 (이웅모 저) / 15장 let, const 키워드와 블록 레벨 스코프 - pp. 215 - 217
https://ko.javascript.info/variables
변수와 상수
ko.javascript.info
https://ko.javascript.info/variables#ref-197
변수와 상수
ko.javascript.info
'Study > JavaScript' 카테고리의 다른 글
[자스 한스푼 ep.1] 프로퍼티 attribute - 데이터, 접근자 프로퍼티 (0) | 2022.11.30 |
---|---|
[자스 한스푼 ep.0] 시작하기에 앞서 (0) | 2022.11.28 |
[JavaScript] var vs. let vs. const - (2) (0) | 2022.11.07 |
[JavaScript] var vs. let vs. const - (1) (0) | 2022.11.07 |
[JavaScript] HTML에 JavaScript 연결하기 (0) | 2022.04.28 |