배열, 객체를 const로 선언했는데 요소나 속성을 추가할 수 있는 이유?
2023. 1. 9. 11:24ㆍ개발자 블로깅/Question
객체가 저장된 공간을 가리키는 정보만 상수일뿐 그 객체의 정보 자체는 변경이 가능하다
객체의 경우 상수로 선언해도 메모리값만 상수일 뿐 객체 안의 내용은 변경이 가능하다. 즉 객체가 저장된 공간을 가리키는 정보만 상수일뿐 그 객체의 정보 자체는 변경이 가능하다. 이런 이유로 JavaScript에서 객체는 변수로 선언할 이유가 없으며 거의 모든 케이스에서 상수로 선언하는게 일반적이다. 또 이렇게 상수로 선언된 객체의 Immutability를 보장하기 위해 여러 테크닉이 쓰이게 되는데 주로 ECMAScript 6에서 도입된 Spread Operator를 사용하는 것이 일반적이다. 이렇게 객체를 복사하여 사용할 때도 Deep clone하지 않으면 의도치 않게 원본 객체가 변경되어버리기 때문에 많은 주의가 필요하다.
참고 https://namu.wiki/w/JavaScript#s-4
추가 질문, let으로 배열과 객체를 선언한다면?
let은 재할당이 가능하므로 적절하지 않다.
'개발자 블로깅 > Question' 카테고리의 다른 글
innerHTML VS innerText VS textContent 차이점 (0) | 2023.01.31 |
---|---|
순수함수란 무엇인가요? 불변성과 사이드 이펙트와 연결하여 설명해주세요. (0) | 2023.01.17 |
HTTP 메시지 구조에 대해 설명해주세요. (0) | 2023.01.10 |
[형 변환] 문자형, 숫자형, 불린형 (0) | 2022.07.16 |
JavaScript - 엄격모드 (use strict) (0) | 2022.07.15 |