자바스크립트 자료형은 크게 2개로 분류(Primitive / Reference data type)됩니다.
💡 원시(Primitive) 타입: 데이터의 실제 값 할당 (String, Number …)
💡 참조(Reference) 타입: 데이터의 위치 값 할당 (Array, Object …)
원시(Primitive) 타입
- 변수에 할당이 될 때 메모리 상에 고정된 크기로 저장이 되고 해당 변수가 원시 데이터 값을 보관합니다.
- 변수 선언, 초기화, 할당 시 값이 저장된 메모리 영역에 직접 접근합니다.
*변수에 새 값이 할당이 될 경우, 변수에 할당된 메모리 블럭에 저장된 값을 바로 변경합니다. - 종류: boolean, number, string, null, undefined
- 각 변수 간에 원시 타입 데이터를 복사할 경우, 데이터의 값이 복사됩니다.
var x = 100;
var y = x;
x = 99;
// x에 할당된 값의 주소를 복사한 것이 아니라 값 자체를 복사하므로,
// x 값을 변경해도 y 값은 변경되지 않습니다.
console.log(y); // 100;
참조(Reference) 타입
- 참조 타입의 데이터는 크기가 정해져 있지 않습니다.
- 변수에 할당 될 때 변수에는 데이터에 대한 참조가 저장됩니다.
*변수의 값이 저장된 힙 메모리의 주소값을 저장한다. - 데이터에 대한 참조를 이용해서 변수의 값에 접근합니다.
- 종류: Object ( array, function, object )
- 각 변수 간에 참조 타입 데이터를 복사할 경우, 데이터의 참조가 복사됩니다.
var x = { count : 100 };
var y = x;
x.count = 99;
// x와 y는 동일한 객체를 참조하므로, x값을 변경하면, y값도 동일하게 변경됩니다.
console.log(y.count); // 99
- 데이터 참조 추가 예시
var list1 = [1, 2, 3]; // 메모리 주소 : 8765e 라고 가정
var list2 = [1, 2, 3]; // 메모리 주소 : 9524d 라고 가정
var isSame = list1 === list2; // 8765e === 9524d
// list1과 list2는 동일한 배열을 가지고있지만, 참조하는 주소가 다르므로 false입니다.
console.log(isSame); // false
var list3 = list1;
var isSame2 = list1 === list3' // 8765e === 8765e
// list1과 list2는 같은 주소를 참조하므로 true입니다.
console.log(isSame2); // true
[참고자료]
JavaScript - Primitive Type(원시 타입) vs Reference Type (참조 타입)에 대해 알아보자
'Javascript' 카테고리의 다른 글
| 프로미스와 Async / await (0) | 2024.04.11 |
|---|---|
| 프로토타입 (1) | 2024.04.11 |
| 깊은 복사와 얕은 복사 (0) | 2024.04.11 |
| 모듈 (0) | 2024.04.11 |
| 일급객체와 함수 (0) | 2024.04.11 |