원시,참조 자료형

hyo·2021년 9월 8일
0

[Javascript] 기초 학습

목록 보기
38/62

원시 자료형

자바스크립트에서 원시 타입의 데이터(primitive data types;원시자료형)는 객체가 아니면서 method를 가지지 않는 6가지의타입!
string,number,bigint,boolean,undefined,symbol,(null)
을 말한다.
이중에서 자주 사용하는 원시자료형
string,number,boolean,undefined,(null)

원시자료형은 원시자료형의 보관함인 변수에 하나의 원시 자료형만 담을 수 있다.
이 특징은 참조 자료형이 보관되는 특별한 보관함과는 구분된다.
참조 자료형(배열,객체~)은 어떻게 코드를 작성하느냐에 따라서 보관되는 데이터의 양이 많아 질수 있다. 반면에, 원시 자료형은 '하나'의 의미를 가지는 데이터임에는 변함이 없다. 그렇기 때문에 원시 자료형이 담기는 보관함의 크기는 고정하는것이 맞다.

원시 자료형은 값 자체에 대한 변경이 불가능하지만, 변수에 다른 데이터를 할당할 수는 있다.

let A 부분에서 word라는 변수에 재할당을 하여 변수에 담긴 내용을 변경은 가능.
const B 키워드로 선언하면 ,재할당은 불가하다.(err가 뜬다)
원시자료형을 간단한 코드로 이해해본다.

B에 3이 할당 되어도, 여전히 A는 2이다. A의 값을 B로 복사하여 할당했기 때문에 변수A에 영향을 미치지않는다.

참조 자료형

참조자료형을 변수에 할당할 때는 변수에 값이 아닌 주소를 저장한다
자바스크립트에서 원시자료형이 아닌 모든 것은 참조 자료형이다.
배열([]),객체({}),함수(function(){})가 대표적이다.
이런 자료형을 자바스크립트에서는 참조 자료형(참조 타입)이라고도 한다.

참조 자료형에는 하나의 데이터가 아닌 여러개의 데이터가 담기게 된다.
원시자료형이 보관되는 데이터보관함이 아닌 특별한 데이터 보관함에 저장된다.
이 데이터가 위치한 곳(메모리 상 주소)을 가리키는 주소가 변수에 저장된다.
즉, 변수에는 특별한 데이터 보관함을 찾아갈 수 있는 주소가 담겨있고,
이 주소를 따라가보면 특별한 데이터 보관함을 찾을 수 있는데,
이 특별한 데이터 보관함에서는 자기 마음대로 사이즈를 늘렸다가 줄였다가 한다.
이처럼 데이터는 별도로 관리되고, 우리가 직접 다루는 변수에는 주소가 저장되기 때문에 reference type 이라고 불린다. 이런 특별한 데이터 보관함을 heap이라고도 불린다.

간단한 코드로 이해해본다.

A의 값{num:3}의 주소를 B에 할당했다. 이 상태는 변수 A와 변수B에 모두 같은 {num:3}이라는 객체의 주소를 바라보고 있다. B.num = 2 로 값이 3이었던 B.num에 2를 할당했으므로 같은 주소를 바라보고 있는 A.num도 2가 되었다.

profile
개발 재밌다

0개의 댓글