배열, 객체를 const로 선언했는데 요소나 속성을 추가할 수 있는 이유에 대해서 설명해주세요
const numbers = [1,2.3,4]
numbers.push(100) // [1,2,3,4,100]
numbers[0] = 5 // error
const cats = {name: 'rey', gender : 'female'};
cats.age = 4 // {name: 'rey', gender : 'female', age:4};
obj.name = "meow" // error
const로 선언된 변수는 할당된 메모리 주소를 가리킨다. 따라서 배열이나 객체 속성의 추가나 변경은 변수가 참조하는 메모리 주소에서 직접적인 변경을 일으키지 않고 해당 객체 또는 배열에 대한 참조를 통해 내부 값을 변경한다
그러나 배열 요소의 값을 아예 바꾸는 것은 값 자체를 수정하는 것으로 const로 선언된 변수에는 불가능하다.
따라서 const로 선언된 배열과 객체는 재할당이 불가능하지만 내부 값은 변경 가능하다 그래서 위의 예시와 같이 const로 선언한 배열이나 객체에 요소나 속성을 추가할 수 있는 것이다