데이터 타입은 프로그래밍 언어에서 사용할 수 있는 데이터(Number, String etc)의 종류이다.
코드에서 사용되는 모든 데이터는 메모리에 저장하고 참조할 수 있어야 한다. 데이터 타입은 데이터를 메모리에 저장할 때 확보해야 하는 메모리 공간의 크기와 할당할 수 있는 유효한 값에 대한 정보, 그리보 메모리에 저장되어 있는 2진수 데이터를 어떻게 해석
할 지에 대한 정보를 제공한다.
데이터 타입은 한정된 메모리 공간을 효율적으로 사용하기 위해서, 그리고 2진수 데이터로 메모리에 저장된 데이터를 다양한 형태로 사용하기 위해 존재한다.
Primitive
와 Reference
두 가지 변수 유형이 있다.원시형의 값은 변경 불가능한 값(immutable value)
이며 값에 의해 전달(pass-by-value) 된다.
var a = 1;
var b = a;
console.log(a); // 1
b = 2;
console.log(b); // 2
console.log(a); // 1
원본은 변경되지 않으며 사본만 변경된다.
원시 타입을 제외한 나머지 값들(배열, 함수 etc)은 모두 객체이며, 객체는 참조에 의해 전달(passs-by-reference)된다.
참조 타입이란 객체의 모든 연산이 실제값이 아닌 참조값으로 처리됨을 의미한다. 원시 타입은 값이 한번 정해지면 변경할 수 없지만, 객체는 프로퍼티를 변경, 추가, 삭제등이 가능하므로 변경 가능한 값이다.
따라서 객체 타입은 동적으로 변화할 수 있으므로 메모리 공간을 확보해야 하는지 예측할 수 없기 때문에 런타임에 메모리 공간을 확보하고 메모리의 힙 영역
에 저장된다.
var obj = {
a: 1,
b: 2,
c: 3
};
var another = obj;
another.c = 5;
console.log(obj); // obj = { a: 1, b: 2, c: 5}
참조형이 복사된 이후 사본을 변경하면 원본도 변경된다.