JavaScript
[JavaScript] const에 담긴 객체의 수정이 가능한 이유
fnow
2022. 4. 20. 11:11
반응형
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"]
반응형