JavaScript에서 자료형(type)은 값(value)의 종류. 각각의 자료형은 고유한 속성과 메서드를 가지고 있다. 자료형은 크게 두 가지로 구분. 원시 자료형(primitive type),참조 자료형(reference type)
자바스크립트에서 number,string,boolean과 같은 고정된 저장 공간을 차지하는 데이터를 모두 원시 타입 데이터(Primitive type)로 구분.
원시 자료형은 객체가 아니면서 메소드를 가지지 않는 6가지 타입.
string , number , boolean , undefined , symbol , (null)
// 원시 자료형(primitive type): number, string, boolean, undefined, null
42, 'string', true, undefined, null
이 중, 자주 사용되는 4(+1)가지 원시 자료형은
string , number , boolean , undefined , (null)
원시 자료형은 단 하나의 데이터를 담고 있다.
하나의 정보만 담고있기 때문에, 고정된 저장 공간을 사용하는 것이 합당하다. 원시 자료형 타입의 값 자체는 변경이 불가능하지만, 변수에 다른 데이터를 할당할 수 있다.
원시 자료형이 아닌 모든 것은 참조 자료형,
Object로 구분되는 모든 자료형에 해당.
대표적: 배열, 객체, 함수
참조 자료형에는 하나의 데이터가 아닌 여러 데이터가 담기게 된다.원시 자료형이 보관되는 데이터 보관함이 아닌 특별한 데이터 보관함(heap)에 저장.
변수에 저장되는 값은 이 데이터가 위치한 곳을 가리키는 주소가 저장.
특별한 데이터 보관함은 데이터의 크기에 따라 사이즈를 늘렸다 줄였다 할 수 있다. (동적으로 변함)
실질적인 데이터는 특별한 보관함에 저장되고, 변수에 저장되는 값은 그 보관함함에 데이터가 위치한 주소이기 때문에, 이를 참조한다 하여 참조 자료형이라 부른다.
원시 자료형이 할당될 때에는 변수에 값(value) 자체가 담기고, 참조 자료형이 할당될 때는 보관함의 주소(reference) 가 담긴다.
값을 찾을 땐 저장소에 저장된 주소를 보고, heap에서 그 주소에 맞는 값을 찾아 반환.
// 참조 자료형(reference type)
[0, 1, 2] // 배열
{name: 'kimcoding', age: 45} // 객체
function sum (x, y) { return x + y } // 함수

원시 자료형은 변수에 값이 할당될 때, 값 자체가 할당.
참조 자료형은 변수에 값이 할당될 때, 보관함의 주소(reference)가 할당.
변수엔 원시 값 혹은 주소만 지정할 수 있고, 주소는 크기가 변하는 특별한 데이터 저장소인 heap을 참조하게 되는 것.