-
[JAVASCRIPT] 원시자료형과 참조자료형코드스테이츠 43기 2023. 1. 2. 13:23
원시자료형
객체가 아니고, method를 가지지않는 6가지 타입
string, number, bigint, boolean, undefined, symbol, (null)
변수에는 하나의 데이터만 담을 수 있음.
참조자료형
하나의 데이터가 아닌 여러개의 데이터가 담김
원시 자료형이 보관되는 데이터 보관함이 아닌 특별한 데이터 보관함에 저장. 이 데이터가 위치한 곳(메모리 상 주소)을 가리키는 주소가 변수에 저장됨.
변수에는 특별한 데이터 보관함을 찾아갈 수 있는 주소가 담겨있고,
이 주소를 따라가 보면 특별한 데이터 보관함을 찾을 수 있는데,
이 특별한 데이터 보관함(heap)은 사이즈가 변함("동적(dynamic)으로 변한다")
이처럼 데이터는 별도로 관리되고, 우리가 직접 다루는 변수에는 주소가 저장되기 때문에 reference data type이라고 불림.
*원시 자료형이 할당될 때에는 변수에 값(value) 자체가 담기고, 참조 자료형이 할당될 때는 보관함의 주소(reference)가 담깁니다.
*참조 자료형은 기존에 고정된 크기의 보관함이 아니라, 동적으로 크기가 변하는 특별한 보관함을 사용할 수 있습니다.
first===second //true;
first와 second는 같은주소를 공유하고 있는 참조자료형임
따라서 first[0]은 5가 됨.
x.foo는 2가 됨.(참조자료형) y에는 x의 주소를 할당하였음
위 두개는 사실이지만 아래 두개는 사실이 아님.
[1,2,3]===[1,2,3]은 다른 두개의 주소(heap)을 설정했기 때문에.
같은 이유로 []===[]도 true가 아님
ourArray[2]=25;를 할당했기 때문에
myArray ===[2,3,25,5]가 됨.
이후 ourArray = undefined를 할당하였으므로 ourArray에는 원시자료형이 들어가서 myArray에는 영향을 미치지 않게 됨.
value에 score의 값 80이 할당되고, value에 90이 할당됨
다만 변수 score의 값 80은, 참조 자료형이 아니기 때문에 주소값을 전달하지 않고, 값 자체를 복사하여 전달하게 됩니다. 그래서 함수에서 어떤 일이 발생했던가와 관련이 없이 score는 초기에 할당된 값 80이 그대로 유지됩니다
'코드스테이츠 43기' 카테고리의 다른 글
Section 1 회고 (0) 2023.01.11 section 1 면접준비 (0) 2023.01.11 TIL 2022.12.31.(이번주) (0) 2023.01.01 [2022.12.29] TIL javascript 배열 함수들 (0) 2022.12.29 [코드스테이츠 43기/2022.12.27] javascript 계산기 구현 (0) 2022.12.27