JS. 데이터 타입(Primitive Types & Reference Types)

데이터 타입

데이터 타입은 프로그래밍 언어에서 사용할 수 있는 데이터(Number, String etc)의 종류이다.

코드에서 사용되는 모든 데이터는 메모리에 저장하고 참조할 수 있어야 한다. 데이터 타입은 데이터를 메모리에 저장할 때 확보해야 하는 메모리 공간의 크기와 할당할 수 있는 유효한 값에 대한 정보, 그리보 메모리에 저장되어 있는 2진수 데이터를 어떻게 해석할 지에 대한 정보를 제공한다.

데이터 타입은 한정된 메모리 공간을 효율적으로 사용하기 위해서, 그리고 2진수 데이터로 메모리에 저장된 데이터를 다양한 형태로 사용하기 위해 존재한다.

Primitive Types && Reference Types

  • 자바스크립트에는 PrimitiveReference 두 가지 변수 유형이 있다.
  • 변수는 생성된 후에 메모리에 저장된다.
  • 변수가 복사되면 메모리 내 값이 복사된다.
  • 호출을 통해 함수에 변수를 전달하면 해당 변수의 사본도 생성된다.

Primitive Types(원시 타입)

원시형의 값은 변경 불가능한 값(immutable value)이며 값에 의해 전달(pass-by-value) 된다.

  • null
  • undefined
  • Boolean
  • Number
  • String
  • Symbol
var a = 1;
var b = a;
console.log(a); // 1

b = 2;

console.log(b); // 2
console.log(a); // 1

원본은 변경되지 않으며 사본만 변경된다.

Reference Types(객체 타입, 참조 타입)

원시 타입을 제외한 나머지 값들(배열, 함수 etc)은 모두 객체이며, 객체는 참조에 의해 전달(passs-by-reference)된다.

참조 타입이란 객체의 모든 연산이 실제값이 아닌 참조값으로 처리됨을 의미한다. 원시 타입은 값이 한번 정해지면 변경할 수 없지만, 객체는 프로퍼티를 변경, 추가, 삭제등이 가능하므로 변경 가능한 값이다.

따라서 객체 타입은 동적으로 변화할 수 있으므로 메모리 공간을 확보해야 하는지 예측할 수 없기 때문에 런타임에 메모리 공간을 확보하고 메모리의 힙 영역에 저장된다.

  • Array
  • Object
  • Function
  • etc..
var obj = {
    a: 1,
    b: 2,
    c: 3
};
var another = obj;

another.c = 5;
console.log(obj);   // obj = { a: 1, b: 2, c: 5}

참조형이 복사된 이후 사본을 변경하면 원본도 변경된다.


Written by@Jkun
...

GitHub