그저 내가 되었고

⚡️JS:: 데이터 타입; 원시형(Primitive Type) vs 참조형(Reference Type) 본문

개발/JavaScript

⚡️JS:: 데이터 타입; 원시형(Primitive Type) vs 참조형(Reference Type)

hyuunii 2022. 12. 14. 23:24

JavaScript Data Type

자바스크립트의 자료형 (문자, 숫자, array, object 등)은 자료형을 크게 2개로 분류
1) Primitive data type: 문자, 숫자, 불리언, undefined, null, symbol 등. 바로 값을 그대로 할당함.
2) Reference data type: 객체, 배열, 함수 등. 값이 저장된 주소값을 할당(참조)함.


Primitive data type

  • 문자, 숫자 자료형들이 대표적
  • 변수에 데이터가 직접 저장되는 자료들
var name = 'Nam';
var age = 20;

 

Reference data type

  • Array, Object 등의 자료형
  • 자료가 저기에 있다는 화살표(레퍼런스)를 변수에 저장

각 변수 간에 참조 타입 데이터를 복사할 경우, 데이터의 참조가 복사된다.

var x = { count : 100 };
var y = x;

x.count = 99;

console.log(y);	// 99

변수 x와 y는 동일한 참조를 담고 있다. 따라서 동일한 객체를 가리키게 된다.

 

 

Primitive Type vs Reference Type

E.g.) 1

var list1 = [1, 2, 3];	// 메모리 주소 : 8765e 라고 가정
var list2 = [1, 2, 3];	// 메모리 주소 : 9524d 라고 가정

var isSame = list1 === list2;	8765e === 9524d

console.log(isSame);	// false

list1, list2안의 요소는 같지만 배열을 새롭게 만들어 변수에 담고 있기 때문에 각자 새로운 메모리 위치를 만들어 저장하고 그 위치를 참조하여 변수에 해당 위치값을 저장하는 것과 같다. 따라서 결과는 false가 된다.

 

E.g.) 2

var list3 = [ 1, 2, 3];
var list4 = list3;

var isSame = list3 === list4;

console.log(isSame);	// true

위의 예제와는 다르게 새롭게 배열을 생성하지않고 list3의 위치값을 그대로 list4에 넣는 것이기 때문에 위치값이 같은 경우라고 할 수 있다. 따라서 결과는 true가 된다.

 

 

 

REFERENCE
https://velog.io/@tjdkzz97/PrimitiveReference-data-type
https://velog.io/@surim014/JavaScript-Primitive-Type-vs-Reference-Type