원시자료형 참조자료형 종류와 특징

문도연·2022년 5월 12일
0
post-thumbnail

🦖 원시 자료형(primitive data type)

  • 객체가 아니면서 method를 가지지 않는 6가지의 타입
    = string, number, bigint, boolean, undefined, symbol, (null)

❗️ 원시 자료형 특징

1) 변수 하나당 하나의 데이터만을 담는다

2) 원시 자료형은 고정된 크기의 보관함(stack)에 담긴다.'stack'이라는 저장공간에 변수이름과 데이터가 함께 저장된다

3) 원시 자료형이 변수에 할당될 때 값(value) 자체가 담긴다

4) 원시 자료형 데이터를 복사할 때, 복사본을 수정해도 원본데이터에는 영향을 주지 않는다(immutable)

 let A = 1;
 B = A;	
 B;	//1
		
 B = 9;  
 A;	//1
 B;	//9

변수 A에 담긴 원시 자료형을 B에 복사하는 경우,
데이터 값 자체만 복사되기 때문에
B에 데이터를 재할당해도 기존 데이터 A에 영향이 가지 않는다.


🎩 참조 자료형(reference data type)

원시 자료형이 아닌 모든 것
= 배열[], 객체{}, 함수function(){} 가 대표적


❗️ 참조 자료형 특징

1) 하나의 변수에 대량의 데이터가 담긴다.

2) 그래서 참조 자료형은 그 크기가 유동적으로 변하는 특별한 데이터 보관함(heap)에 담긴다.

  • 다양하고 많은 정보의 크기가 수시로 변하는 것을 처리하기 위해서 참조 자료형은 heap이라는 별도의 메모리 저장 공간을 사용한다.
  • 'heap'이라는 공간에 데이터의 내용을 보관하고, 'heap'의 주소를 'stack'에 저장한다.

3) 참조 자료형이 변수에 할당될 때 값(value) 자체가 아닌 참조 자료형이 담겨 있는 특별한 데이터 보관함의 주소가 담긴다.

  • 실제 데이터는 heap에서 별도로 관리되고, 변수에는 데이터 보관함의 주소가 저장된다.

  • 데이터를 호출할 때 'stack'에 저장되어 있는 주소를 참조하여 'heap'에서 데이터를 찾아 반환한다.

    JS: "메모리에 공간은 내가 알아서 부여할게. 변수는 그 공간의 주소만 참조하렴!"

4) 참조 자료형 데이터를 복사할 때, 데이터의 주소를 공유하게 되므로 복사본 데이터를 수정하면 원본 데이터에 영향을 준다.(mutable)

Let e = [70,90];
Let f = e;

f[0] =50;
E; //[50,90]	
F; //[50,90]
  • 변수 e : address:1이 담김 = 데이터의 메모리주소가 담김
    변수 f : address:1이 담김 = 데이터의 메모리주소가 담김

  • 특별 보관함 heap의 address:1에는 [70, 90] 데이터가 담김

  • 변수 e,f의 값은 참조 자료형이므로, 같은 메모리 주소를 공유하기 때문에, 복사한 데이터에서 원소를 변경하면 address:1에서 변경됨.

  • heap에 있던 데이터가 변경됨 = 기존의 데이터에 영향이 간다


참고

https://velog.io/@elma98/TILToday-I-Learned-Immutability%EC%99%80-Mutability

profile
중요한건 꺾이지 않는 마음이 맞는 것 같습니다

0개의 댓글