원시 & 참조 자료형

franchesca·2021년 3월 14일

📍 원시 자료형 (Primitive type data)

메모리에서는 무슨 일이?

  • let a; (변수 a를 선언) -> stack이라는 사물함 이름표에 a 붙임
  • a = 1; (a 에 1을 할당) -> stack에서 a를 찾아 1을 집어 넣음
  • a; //1 (a의 값을 찾는다) -> stack에서 a를 찾아 값을 불러옴

특징

  • 객체가 아니면서 method를 가지지 않는 6가지 타입
  • string, number, bigint, boolean, undefined, symbol, (null)
  • '하나'의 정보, 즉 데이터를 담고 있다
  • 원시타입 데이터를 복사할 경우엔 데이터 값이 복사되기 때문에 기존의 데이터에 영향이 가지 않는다
  • 원시 자료형은 값 자체에 대한 변경이 불가능(immutable)하지만, 변수에 다른 데이터를 재할당할 수는 있다

📍 참조 자료형 (reference type data)

메모리에서는 무슨 일이?

  • let a = [4, 5, 6]; -> stack에 이름표 a를 달고 address: 1을 넣어줌. 이때 address: 1은 4, 5, 6 값을 담고 있는 특별한 데이터 보관함 heap에서의 주소
  • a; -> 사물함 안의 주소를 보고 heap에서 값을 찾아 반환

특징

  • 하나의 주제는 있지만 서로 다른 여러 개의 데이터를 가지고 있다
  • 참조 자료형은 원시 자료형이 아닌 모든 것; array, object, function
  • 원소를 빼거나 넣을 땐 stack이 아닌 heap에서! heap에서는 stack과 달리 동적으로 사이즈를 늘렸다가 줄일 수 있다
  • 변수가 refer(가리키다)하고 있는 데이터를 참조한다는 의미! 변수의 정보를 읽는다고 표현하지 않는 이유는 변수의 주소를 참조하여 실제 변수가 있는 장소에 어떤 데이터가 있는지 도착하고 나서야 비로소 읽을 수 있기 때문이다
  • 참조타입 데이터는 주소를 복사하므로, 복사한 데이터에서 원소를 변경하면 주소 안에 있는 데이터가 변경이 되기 때문에 기존의 데이터에도 영향이 미친다

Self-check

  • 원시 자료형(primitive type)과 참조 자료형(reference type)의 구분이 왜 필요한지에 대해서 이해할 수 있다.
  • 원시 자료형과 참조 자료형의 차이를 이해하고, 각자 맞는 상황에서 사용할 수 있다.
  • 원시 자료형이 할당될 때에는 변수에 값(value) 자체가 담기고, 참조 자료형이 할당될 때는 보관함의 주소(reference)가 담긴다는 개념을 코드로 설명할 수 있다.
  • 참조 자료형은 기존에 고정된 크기의 보관함이 아니라, 동적으로 크기가 변하는 특별한 보관함을 사용한다는 것을 이해할 수 있다.
profile
말하기 보다 생각하는, 생각하기보다 볼 줄 아는 개발자가 되려고 합니다✨

0개의 댓글