배열, 객체를 const로 선언했는데 요소나 속성을 추가할 수 있는 이유

young0_0·2023년 4월 3일
0

js

목록 보기
9/10

const 변수에 할당된 값은 바뀌지 않지만 배열/객체가 변수에 할당 될 때에는 배열/객체의 요소(값) 자체가 아니라 주소가(이 값은 불변,상수)가 할당되기 때문이다.

  • const는 변하지 않는 상수 constant를 선언하는 키워드 이며, 이 상수의 값은 재할당 할 수 없으며 다시 선언 할수도 없다
  • 그러나 배열, 객체는 참조형자료 reference data type이며, 참조 값은 변수에 주소를 할당한다.(변수에 값을 직접 할당하는 원시자료형)
  • 숫자, 문자열 등의 원시자료형은 stack영역에 값 자체가 저장되지만 배열, 객체, 함수 등의 참조자료형은 heap영역에 값이 저장되고, stack에는 heap에 저장된 데이터 주소만 저장된다.
  • 실제 heap 내에 저장되어 있는 배열, 객체 내의 요소를 변경하더라도, 참조된 주소는 변하지 않으므로 const 사용이 가능하다.

stack

parameters, automatic and temporary variables 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역

heap

dynamicall allocated vaiables 사용자에 의해 직접 동적으로 할당되고 해제되는 메모리 공간

profile
열심히 즐기자ㅏㅏㅏㅏㅏㅏㅏ😎

0개의 댓글