Js/Node 핵심 개념

wanni kim·2021년 4월 21일
0

primitive data : 원시 자료형 데이터
reference data : 참조 자료형 데이터

Primitive data

stack안의 한 저장소마다 하나의 정보만 할당된다.
string, number, boolean, undefined, symbol, bigint,(null).
원시 자료형 데이터는 값 자체에 대한 변경이 불가능(immutabale)
하지만, 변수에 데이터를 재 할당할 수 있다. 결론적으로 값을 바꿀 수 있다??

symbol과 bigint는 특별한 데이터 타입.(self discuss need)
null은 원시타입은 아니지만, 원시타입으로 사용하고 작동방식도 동일.
symbol과 bigint는 MDN참조, null은 아래 스택오버플로우 답변 참조.
https://stackoverflow.com/questions/20480729/why-does-typeofnull-return-object-but-you-cant-assign-properties-to-it/20480863#20480863

Reference data

heap이라는 저장소에 값들을 연결해둔다. 그 저장소의 주소가 stack의 안에 할당되기에 stack의 주소를 참조한다해서 참조타입 데이터라고 한다. 주소를 참조한것이라 또다른 변수에 주소를 할당하고 그 새로운 변수를 통해 값을 바꾼다면, heap에 있는 값도 변하기 때문에 stack의 주소를 가져간 모든 변수들의 값도 같이 바뀐다.

서로다른 데이터를 여러개 가지는 데이터 (동적으로 변하는 데이터 보관함)
object, array, function
위에서 적었듯이 참조형 데이터에는 변수에 값이 아닌 주소를 저장한다. 주소가 할당되는것은 개발자가 직접하는것이 아니기때문에 이해하기 어렵다. 하지만 이해했다 다행히.

참조타입의 데이터들은 변수를 참조하는것이다. 참조하는 변수안의 주소를 참조하여 heap에 담겨있는 진짜 데이터에 접근하는것이다. 변수는 단지 주소를 저장하는 곳 일 뿐, data 즉 값이 담기지는 않는다.

heap은 dynamic하다. 동적이다! 데이터가 작으면 작은 저장소를 만들어내고 데이터가 크다면 그 크기에 맞게 저장소를 크게 만들것이다.

profile
Move for myself not for the others

0개의 댓글