(JS) 원시 자료형 & 참조 자료형

woong·2022년 9월 6일
0
post-thumbnail

data type 분류

자바스크립트에서는 데이터를 저장하는 방식에 따라 원시자료형참조자료형 두 가지로 data type을 분류한다.

1. 원시 자료형 (primitive data type)

객체가 아니면서 method를 가지지 않는 자료형.
primitive type은 **number, string, boolean, undefined, symbol, (null) 자료형을 포함한다.

  • 고정된 저장 공간을 차지한다.
  • 변수에는 하나의 데이터만 담을 수 있다. 값 자체를 변경하는 것은 불가능하지만, 다른 값을 재할당할 수 있다.
  • 새로운 변수에 할당을 하면, 새로운 복사본을 가진다. 그래서 기존의 데이터 값에는 영향이 없다.
let x= 5 ;
let y= x ;
console.log(x===y) ; // true

y= 10 ;
console.log(x===y) ; // false (x값은 그대로 5)

2. 참조 자료형 (reference data type)

원시 자료형이 아닌 모든 자료형.
reference type은 함수(function(){}), 배열([]) , 객체({})를 포함한다.

  • 대량의 데이터가 들어올 수 있으므로 저장 공간이 동적으로 변한다.
  • primitive와 비교하면 value(값)이 아닌 주소(address)를 복사한다. heap이라는 공간에 각 주소마다 여러 개의 데이터를 보관한다.
  • 복사한 데이터 원소를 변경하면 주소 안의 데이터가 변경되어 기존 데이터 값도 바뀌게 된다.
console.log([1,3] === [1,3]) ;  //false (reference에서 ===는 주소값이 같은지 확인)
----------------------------------------------------------------------------

let arr1 = [1,2,3] ;
let arr2 = arr1 ; // arr2에 arr1의 주소 할당.
arr2[1] = 5 ; // arr2의 주소값에 해당하는 배열의 1번째 요소가 5로 변경. 1과 2의 주소값이 같으므로 arr1도 [1,5,3]
arr2 = undefined ; // 원시자료형이 할당되었으므로, arr1과 관계 없음.

console.log(arr1) ; // [1,5,3]
console.log(arr2) ; // undefined;

0개의 댓글