원시자료형과 참조자료형(Primitive vs Reference)

이예빈·2022년 7월 11일
0

JavaScript

목록 보기
10/26

자바스크립트의 데이터 타입은 크게 두 가지로 나누어 볼 수 있다.

  • 원시자료형 ( Primitive data type )
  • 참조자료형 ( Reference data type )

원시자료형은 객체가 아니면서 method를 가지지 않는 아래의 6가지 데이터를 말한다.

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

참조자료형은 원시자료형이 아닌 모든 데이터 타입이다.

  • array, object, function

원시자료형은 변수가 가리키는 데이터가 스택(stack)이라는 ' 사물함 ' 안에 바로 저장되고,
참조자료형스택에는 자료의 '집주소'만 들어있고 실제 데이터는 힙(heap)이라는 ' 마을 '에 저장된다.

스택에 사물함 칸의 크기는 정해져 있기 때문에 저장될 수 있는 데이터의 크기는 한정적이다. 변수에 할당되는 즉시 사물함 하나에 데이터가 저장되는 것이기 때문에 데이터를 수정하는 것이 불가능하고 데이터를 변경하려면 새로 할당해주어야 한다. 또한 변수 하나에 사물함 한 칸이 사용되기 때문에 변수의 값을 복사했을 때 깊은 복사(Deep copy)가 이루어지며, 복사된 값은 별도의 칸으로 저장되어 하나의 변수를 수정했더라도 이전에 복사된 데이터는 수정되지 않고 그대로 남아있다.

에는 보다 큰 데이터들이 저장될 수 있다. 데이터 집의 크기는 안에 저장된 데이터의 크기에 따라 달라진다. 힙에 저장된 데이터는 일부만 수정을 하는 것이 가능하며, 변수의 값을 복사했을 때 기존 데이터와 복사된 데이터는 하나의 집주소를 공유하기 때문에 얕은 복사(shallow copy)가 이루어져 복사된 데이터를 수정했을 때 그 주소값을 가진 기존데이터도 함께 수정된다.

profile
temporary potato

0개의 댓글