[TIL] 원시자료형과 참조자료형

송인선·2022년 7월 11일
0

TIL

목록 보기
2/16

Today I Learn...

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

이전에는 number, string, boolean 등 원시 자료형의 개념에 대해 짧게 배웠었다. 이번에는 array(배열), object(객체) 즉, 참조 자료형의 개념과 원시 자료형과의 차이점에는 무엇이 있는지 배우는 시간이었다.

솔직히 조금 헷갈리는 내용이었는데, 코드 예시를 보며 퀴즈를 푸니 이해가 더 쉬워지는 것 같다! 😂
(콘솔 사용하니 더더 good 👍)

원시자료형

📌 원시자료형의 종류

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

(bold 처리 -> 자주 사용)

📌 원시자료형의 특징

  • 변수에는 데이터의 크기와 관계없이 하나의 데이터만 담을 수 있다.
  • 값 자체에 대한 변경이 불가능(immutable)하지만, 변수에 다른 데이터를 할당할 수는 있다.
"hello!"
"hi!"
// "hello!" 와 "hi!"는 모두 변경 x 고정된 값임

let word = "hello!"
word = "hi!"
// word라는 변수에 '재할당'을 하여 변수에 담긴 내용을 변경하는 것은 o

const num = 123;
num = 122333; // 에러 발생!
// const 키워드로 선언하면, 재할당은 불가!
// let 키워드는 재할당 가능!

참조자료형

📌 참조자료형의 종류

  • array 배열([])
  • object 객체({})
  • function 함수(function(){})

📌 참조자료형의 특징

  • 변수에 하나의 데이터가 아닌 여러 데이터가 담긴다.
  • 데이터가 위치한 곳(메모리 상 주소)을 가리키는 주소가 변수에 저장.
  • 데이터 보관함은 자기 마음대로 사이즈를 변화시킴 -> "동적(dynamic)으로 변한다"
  • 이처럼 데이터는 별도로 관리되고, 우리가 직접 다루는 변수에는 주소가 저장되기 때문에 reference data type이라고 불린다.
  • 이런 데이터 보관함을 heap이라고 부른다.

오늘의 메모 📝

원시 자료형이 할당될 때 -> 변수에 값(value) 자체가 담긴다.
참조 자료형이 할당될 때 -> 변수에 보관함의 주소(reference)가 담긴다.

let x = 2;
let y = x; // y에 x를 할당했기 때문에 y = 2
y = 3; // y에 3을 재할당. y = 3, x = 2
// 원시자료형은 값 자체를 복사하여 할당하기 때문에 x의 값은 변하지 않는다.


let x = { foo: 3 };
let y = x; // y에 x의 주소를 할당(같은 주소) y = { foo: 3 }
y.foo = 2; // y = { foo: 2 }, x = { foo: 2 }
// 참조자료형은 같은 주소를 사용하기 때문에 y의 값을 바꾸면 x의 값도 바뀐다. 


console.log([1,2,3] === [1,2,3]); // false
// 참조 자료형 ===(strict equality)는 주소값이 같은지를 확인. 
// 두 참조 자료형의 주소값은 다르다!
profile
캣닙같은 마성의 개발자

0개의 댓글