javascript 원시자료형 & 참조자료형

🐶·2021년 5월 29일
1

개념 정리

목록 보기
7/41

오늘 배운 내용📝

  1. 원시 자료형과 참조 자료형은 무엇인가!

  2. 원시 자료형(primitive type)과 참조 자료형(reference type)의 구분이 왜 필요한지?

  3. 원시 자료형과 참조 자료형의 차이를 이해하고, 각자 맞는 상황에서 사용할 수 있다.

  4. 원시 자료형이 할당될 때에는 변수에 값(value) 자체가 담기고, 참조 자료형이 할당될 때는 보관함의 주소(reference)가 담긴다는 개념을 코드로 설명할 수 있다.

  5. 참조 자료형은 기존에 고정된 크기의 보관함이 아니라, 동적으로 크기가 변하는 특별한 보관함을 사용한다는 것을 이해할 수 있다.

원시 자료형이란?

  • 자바스크립트에서 원시 타입의 데이터(primitive data types; 원시 자료형)는 객체가 아니면서 method를 가지지 않는 6가지의 타입

    string, number, bigint, boolean, undefined, symbol, (null)

  • 원시 자료형의 보관함인 변수에는 하나의 데이터만 담을 수 있습니다.

  • 원시 자료형이 담기는 보관함의 크기는 고정하는 것이 합당합니다. 어느정도 일정한 크기의 데이터가 온다고 예상할 수 있기 때문입니다.

참조 자료형이란?

  • 원시 자료형이 아닌 모든 것은 참조 자료형. 배열([])과 객체({}), 함수(function(){})가 대표적
  • 참조 자료형을 변수에 할당할 때는 변수에 값이 아닌 주소를 저장합니다.
  • 하나의 주제는 있지만 분명 서로 다르고, 여러 개의 데이터를 가지고 있다.

구분이 필요한 이유?

  • 원시 자료형의 경우, 변수에 넣을 수 있는 데이터 크기가 제한되기 때문.
    따라서 참조 자료형의 경우 변수에 값이 아닌 주소를 저장함으로써 이를 해결한다.

  • 변수에는 특별한 데이터 보관함을 찾아갈 수 있는 주소가 담겨있고, 이 주소를 따라가보면 특별한 데이터 보관함(=heap)을 찾을 수 있는데, 이 특별한 데이터 보관함에서는 자기 마음대로 사이즈를 늘렸다가 줄였다가 합니다. ("동적(dynamic)으로 변한다"라고 하기도 합니다.)

참조 자료형의 다이나믹한 특별보관함

  • 크기가 상황에 따라서 커졌다가 작아지는 특별한 데이터 저장소가 있음.
  • 데이터가 언제 늘어나고 줄어들지 모르기 때문에 별도의 저장공간을 마련하여 따로 관리하는 것. 변수에는 원시값 혹은 주소만 지정할 수 있고, 주소는 크기가 변하는 특별한 데이터 저장소를 참조하게 되는 것

둘의 특징을 정리하자면?

  • 원시 자료형이 할당될 때에는 변수에 값(value) 자체가 담기고, 참조 자료형이 할당될 때는 보관함의 주소(reference)가 담깁니다.
  • 그래서 참조 자료형은 기존에 고정된 크기의 보관함이 아니라, 동적으로 크기가 변하는 특별한 보관함을 사용할 수 있습니다.

코드에 적용해보자

원시 타입 데이터는 각 변수간에 데이터를 복사할 경우, 데이터 값이 복사되기 때문에 기존의 데이터에 영향이 가지 않는다

let a = 1;
b=a; //데이터를 복사할 경우
b=2; 
a; //1, 기존의 데이터에 영향이 가지 않는다

참조 타입 데이터는 주소를 복사한다.
그렇기 때문에 복사한 데이터에서 원소를 변경하면, 주소안에 있는 데이터가 변경되는 것이기 때문에 기존의 데이터에도 영향이 간다.

let e = [10, 20];
let f = e;
f[0] = 50;
e; //[50, 20]
profile
우당탕탕 개발일기📝🤖

0개의 댓글