📌 원시 자료형(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에 영향이 가지 않는다.(immutable)
📌 참조 자료형(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에 있던 데이터가 변경됨 = 기존의 데이터에 영향이 간다
'코드스테이츠 > 헷갈리는거 정리' 카테고리의 다른 글
var,let,const 과 스코프,호이스팅 (0) | 2023.01.04 |
---|---|
type , const (0) | 2023.01.04 |
배열 복사하기 (0) | 2023.01.02 |
GUI 와 CLI (0) | 2023.01.01 |
함수 내부에서의 console.log( )와 return 차이 (3) | 2022.12.19 |