[ JavaScript ] 원시자료와 참조자료

초초·2023년 1월 2일
1

💻📚 TIL

목록 보기
8/22

원시형 데이터

JavaScript에서 원시 타입의 데이터는 객체가 아니면서 method를 가지는 데이터 타입이 존재
number,string,boolean,undefined,symbol,null ...

왜 원시 자료형인가요?

'string', 42, true, false, undefined...

이러한 원시 자료형은 '하나'의 정보, 즉 하나의 데이터를 담고 있는데, 데이터 저장소의 용량이 제한되어 변수 하나에 하나의 원시 자료형 밖에 담을 수 없었기 때문이다

a라는 변수를 선언했을때 저장소에서는 a라는 이름의 보관함을 하나 만들고, 원시 자료형 1을 할당하면 크기가 고정된 보관함 a에 1을 저장한다.

  • 이때 변수 하나에는 하나의 데이터만 담고
  • 값 자체에 대한 변경이 불가능하지만, 변수에 다른 데이터를 할당할 수 는 있음
let word = "hello world"
word = "bye"
  • 데이터를 복사하는 경우, 원본의 값이 복사되어 새로운 변수에 할당되는 것이기 때문에 기존의 데이터(값)에 영향을 미치지 않음

참조형 데이터

JavaScript에서 원시 타입아닌 모든 것은 참조 타입이며,
대표적으로 배열[]과 객체{}, 함수function가 있다
참조 자료형의 데이터는 원시 자료형과 달리 특별한 데이터 보관함에 저장된다

a라는 변수를 선언했을때 저장소에서는 a라는 이름의 보관함을 하나 만든다.
이때 참조 자료형 중 하나인 배열[]을 할당하면 특별한 저장소heap에 배열을 저장하고, 배열이 저장된 주소를 보관함 a에 저장한다

  • 참조 타입의 데이터를 복사한다는 것은 데이터가 담긴 특별한 보관함의 주소를 복사하는 것을 의미한다
  • 따라서 복사된 원본의 주소를 참조하여 원본의 값으로 도달하기 때문에,
    복사해온 주소의 요소를 변경하게 되면 원본의 요소가 변경된다

heap : 참조형 데이터를 위한 특별한 저장소

원시 자료형에서 변수에 하나의 데이터가 담기는 것과 다르게, 여러 데이터가 담긴 참조형 데이터를 저장하기 위해서는 크기가 고정되지 않은 (동적으로 변하는) 특별한 저장소가 필요하다
변수에 담긴 참조 자료형을 사용하기 위해서는 변수에 할당된 주소를 참조하여 특별한 저장소에 있는 값을 읽을 수 있다

profile
잔디 꽉꽉 심쟈 🍀

0개의 댓글