원시 타입(Primitive Type)이란?
✅ 정의
원시 타입 데이터는 값 자체를 저장하는 데이터 타입을 의미합니다. 예를 들어, 'A'라는 변수에 '10'이라는 값을 지정한다면 스택 메모리에 'A'라는 변수는 '10'이라는 값을 가진다라는 정보가 저장되는 것입니다.
💾 메모리 저장 위치
스택(Stack)
📋 종류
number, string, boolean, null, undefined, symbol, bigint
📝 예제
let a = 10;
let b = a; // 값이 복사됨
b = 20;
console.log(a); // 10 (a는 영향을 받지 않음)
console.log(b); // 20
// 메모리 구조 예시
Stack:
+------+----+
| a | 10 |
| b | 10 | (a의 값이 복사됨)
+------+----+
참조 타입(Reference Type)이란?
✅ 정의
참조란 메모리 주소값을 의미합니다. 즉, 참조 타입 데이터는 메모리 주소를 저장하는 데이터 타입을 의미하는 것입니다. 예를 들어, 'A'라는 변수에 '{ value: 10 }'이라는 값을 지정한다면 힙 메모리에 '{ value: 10 }'라는 값이 특정 '메모리 주소 값'으로 지정되어 저장됩니다. 그리고 스택 메모리에 'A'라는 변수는 해당 '메모리 주소 값'을 가진다라는 정보가 저장되는 것입니다.
💾 메모리 저장 위치
스택(Stack) + 힙(Heap)
📋 종류
object, array, function
📝 예제
let obj1 = { value: 10 };
let obj2 = obj1; // 주소가 복사됨
obj2.value = 20;
console.log(obj1.value); // 20 (obj1도 영향을 받음)
console.log(obj2.value); // 20
// 메모리 구조 예시
Stack:
+------+-----------+
| obj1 | 0x001A | --> Heap: { value: 10 }
| obj2 | 0x001A | (같은 주소를 가리킴)
+------+-----------+
비교 예제
원시 타입은 값 자체를 저장하므로 서로 다른 두 원시 타입을 비교할 때 값을 기준으로 비교합니다.
let a = 10;
let b = 10;
console.log(a === b); // true (값이 같음)
참조 타입은 메모리 주소값을 저장하므로 서로 다른 두 참조 타입을 비교할 때 메모리 주소값을 기준으로 비교합니다.
let obj1 = { value: 10 };
let obj2 = { value: 10 };
console.log(obj1 === obj2); // false (주소가 다름)
let obj3 = obj1;
console.log(obj1 === obj3); // true (같은 주소를 참조)
이런 이유로 원시 타입, 참조 타입을 이용할 때는 복사에 대한 이해가 추가적으로 필요합니다.
'백엔드 > Node.js' 카테고리의 다른 글
[TS] 타입 단언(Type Assertion)이란? (0) | 2025.04.09 |
---|---|
[TS] 유니온 타입(Union Type)과 인터섹션 타입(Intersection Type) (0) | 2025.04.09 |
[TS] 타입스크립트 typeof 와 keyof (0) | 2025.04.09 |
[NodeJS]이벤트 루프 동작 이해하기 (0) | 2025.03.19 |
CommonJS(CJS), ES Module(ESM) 차이점과 특징 (0) | 2024.11.20 |