김피치
마치 흘러가는 바람처럼
김피치
전체 방문자
오늘
어제
  • 분류 전체보기 (17)
    • SEB FE 42_TIL (16)
    • 학습 정보 (0)
    • etc (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • http
  • React
  • jsx
  • REST API
  • URI
  • 자바스크립트
  • js
  • Open API
  • 코딩
  • JavaScript
  • 선언키워드

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
김피치

마치 흘러가는 바람처럼

SEB FE 42_TIL

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

2022. 11. 16. 11:06

 

배열, 객체를 const 키워드로 선언했는데 요소나 속성을 추가할 수 있는 이유에 대해서 설명해주세요.

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

 

 

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

 

 


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

** heap 영역: dynamically allocated variables / 사용자에 의해 직접 동적으로 할당되고 해제되는 메모리 공간

*** 배열 - push, pop / 객체 - shift, unshift

'SEB FE 42_TIL' 카테고리의 다른 글

[JavaScript] 클래스와 인스턴스  (0) 2022.11.18
[회고] Section 1을 마무리하며  (0) 2022.11.16
My Agora States  (0) 2022.11.16
[JavaScript] Koans를 풀며 배운 것들 정리  (0) 2022.11.09
[JavaScript] 원시자료형과 참조자료형  (0) 2022.11.07
    'SEB FE 42_TIL' 카테고리의 다른 글
    • [JavaScript] 클래스와 인스턴스
    • [회고] Section 1을 마무리하며
    • My Agora States
    • [JavaScript] Koans를 풀며 배운 것들 정리
    김피치
    김피치
    네? 제가 체크남방 도전중으로 보이시나요?

    티스토리툴바