티스토리 뷰
반응형
const는 재할당이 불가하다. 그런데 const에 담긴 객체(object, 배열...)의 경우 수정이 가능하다. 어떻게 가능한 걸까? 우선 var, let, const 차이에 대해 간략하게 알아보자.
var, let, const
var | let | const | |
재선언 | O | X | X |
재할당 | O | O | X |
호이스팅 | undefined로 초기화되어 메모리에 저장 | 초기화되지 않은 상태로 메모리에 저장 | 초기화되지 않은 상태로 메모리에 저장 |
유효 범위 (Scope) | 함수 스코프 | 블록 스코프 | 블록 스코프 |
const에 객체가 담긴 경우
위 표에서도 알 수 있듯이 const는 재할당이 불가하다. 그런데 const에 담긴 객체는 수정이 가능하다.
이 경우에는 const에 담긴 객체 전체를 재할당 하는 게 아니라 객체의 속성 중에 한 속성만 재할당하는 것이므로 수정이 가능한 것이다.
예제
const car = {
name: 'bmw',
color: 'blue',
}
// 전체 재할당은 에러
car = {
name: 'bmw',
color: 'red',
} // Assignment to constant variable.
// 부분 수정 가능
car.color = 'red';
console.log(car.color); // red
const fruits = ['apple', 'melon', 'lemon'];
// 전체 재할당은 에러
fruits = ['grape'] // Assignment to constant variable.
// 부분 수정 가능
fruits[0] = 'grape'
console.log(fruits) // ["grape", "melon", "lemon"]
반응형
'JavaScript' 카테고리의 다른 글
[JavaScript] 문자열 처리 메서드 정리 (0) | 2022.04.23 |
---|---|
[JavaScript] 배열 요소 추가/삭제/추출 관련 메서드 정리 (0) | 2022.04.22 |
[JavaScript] ES6 - Spread 연산자, rest 파라미터 (0) | 2022.03.10 |
[JavaScript] attribute와 property의 차이점 (0) | 2022.03.08 |
[JavaScript] IIFE 즉시 실행 함수 정리 (0) | 2022.03.08 |