JS에서 값의 타입은 크게 기본형과 참조형으로 나뉜다.
데이터 타입 | |||||||||||
기본형 | 참조형 | ||||||||||
Number | string | Boolean | null | undefined | Symbol | Object | |||||
Array | Function | Date | Reg Exp |
Map, WeakMap |
Set, WeakSet |
이 타입들의 구분 기준은 값의 저장방식과 불변성 여부이다.
* 이 때, 불변성 여부는 값이 불변하다가 아니라 "메모리" 관점에서 봐야 한다.
■ 메모리 관점에서의 데이터 할당
데이터가 변수에 할당 될 때 메모리에는 변수, 데이터 등 영역이 나뉘어져 있다.
(예시)
var a = 10; // 기본형
var obj = { c: 10, d: "ddd"}; // 참조형
변수영역 | 주소 | 1002 | 1003 | 1004 | 1005 | 1006 | … |
데이터 | a / @5002 | obj / @7103~ | |||||
데이터영역 | 주소 | 5002 | 5003 | 5004 | 5005 | 5006 | … |
데이터 | 10 | "ddd" | |||||
참조형 데이터의 별도 저장공간 (obj) |
주소 | 7103 | 7104 | 7105 | 7106 | 7107 | … |
데이터 | c / @5002 | d / @5003 |
* 참조형 데이터는 메모리의 별도저장공간(obj)이 필요하다.
■ 기본형데이터와 참조형데이터의 차이
→ 객체 변수 영역의 별도저장공간의 존재여부
* 이 별도 영역은 언제든지 변경이 가능하다. 따라서 참조형 데이터는 불변하지 않다.(=가변하다)
'TIL' 카테고리의 다른 글
배열 메서드 정리 (0) | 2024.07.29 |
---|---|
기초 IT 개념 정리 (0) | 2024.07.27 |
객체 안의 값 꺼내기 (0) | 2024.07.25 |
객체안에 속성 추가하기 (0) | 2024.07.24 |
문자열 내 마음대로 정렬하기 (3) | 2024.07.23 |