데이터는 메모리에 어떤 방식으로 저장될까?
메모리에 할당되는 방식은 변수의 데이터 타입에 따라 나뉜다.
데이터 타입에는 두 가지가 있다. 기본형과 참조형!
number, string, boolean, null, undefined, Symbol이 있고,Object이다. 이는 함수, 배열, Date, Map, Set 등을 포함한다.var str = 'test!';

그냥 변수 영역에 바로 변수 이름, 데이터를 저장하면 안될까?
숫자형과 달리 문자열의 크기는 일정하지 않다. (영문: 1byte, 한글: 2byte)
var str = 'test!';
str = 'test!test!test!test!test!test!test!';

넣을 자리가 없어진다..
var a = 1; var b = 1; var c = 1; var d = 1;
| 변수로 저장 | 주소로 저장 |
|---|---|
![]() | ![]() |
| 메모리 낭비 : 1을 4번 저장 | 1을 한 번만 저장하고 4번 참조 |
데이터 영역에 쓰지 않는 변수가 저장되면 가비지 컬렉터가 정리해준다!
var hanbyeol = '바보'; // (1)
hanbyeol = '천재'; // (2)
| (1) | (2) |
|---|---|
![]() | ![]() |
| 더 이상 쓰이지 않는 '바보' 데이터는 정리된다 |
참조형 데이터는 별도 저장공간(obj1을 위한 별도 공간)이 필요하다
변수 영역은 그 별도 저장공간의 주소를 담고 있다.
var obj = {
a: 1,
b: 'bbb,
};

var obj = {
x: 3,
arr: [3, 4, 5],
}

var a = 10;
var obj1 = { c: 10, d: 'ddd' };
var b = a;
var obj2 = obj1; //참조형

이때, 기본형은 문제 없지만 참조형인 경우, 같은 obj 영역(@7103 - @7104)을 가리킨다.
따라서, obj1만 수정해도 obj2의 내용도 바뀐다.