자바스크립트의 데이터 타입은 크게 두 가지로 나누어 볼 수 있다.
원시자료형
은 객체가 아니면서 method를 가지지 않는 아래의 6가지 데이터를 말한다.
참조자료형
은 원시자료형이 아닌 모든 데이터 타입이다.
원시자료형
은 변수가 가리키는 데이터가 스택(stack)
이라는 ' 사물함 ' 안에 바로 저장되고,
참조자료형
은 스택
에는 자료의 '집주소'만 들어있고 실제 데이터는 힙(heap)
이라는 ' 마을 '에 저장된다.
스택
에 사물함 칸의 크기는 정해져 있기 때문에 저장될 수 있는 데이터의 크기는 한정적이다. 변수에 할당되는 즉시 사물함 하나에 데이터가 저장되는 것이기 때문에 데이터를 수정하는 것이 불가능하고 데이터를 변경하려면 새로 할당해주어야 한다. 또한 변수 하나에 사물함 한 칸이 사용되기 때문에 변수의 값을 복사했을 때 깊은 복사(Deep copy)
가 이루어지며, 복사된 값은 별도의 칸으로 저장되어 하나의 변수를 수정했더라도 이전에 복사된 데이터는 수정되지 않고 그대로 남아있다.
힙
에는 보다 큰 데이터들이 저장될 수 있다. 데이터 집의 크기는 안에 저장된 데이터의 크기에 따라 달라진다. 힙에 저장된 데이터는 일부만 수정을 하는 것이 가능하며, 변수의 값을 복사했을 때 기존 데이터와 복사된 데이터는 하나의 집주소를 공유하기 때문에 얕은 복사(shallow copy)
가 이루어져 복사된 데이터를 수정했을 때 그 주소값을 가진 기존데이터도 함께 수정된다.