JadeCode

[리뷰] 원시자료형, 참조자료형 본문

개발/웹

[리뷰] 원시자료형, 참조자료형

z-zero 2022. 5. 11. 20:00

원시자료형

원시자료형 : primitive data types

객체가 아니면서 method를 가지지 않는 6타입이다

  • (string, number,bigint,boolean,undefined,symbol,(null))

데이터 보관함 한 칸에 저장 할 수 있는 데이터이다.

참조자료형

참조자료형: reference data type

변수에 값이 아닌 주소를 저장한다.

크기가 동적으로 변하는 데이터 보관함이 필요

vs

원시타입데이터는 각 변수간의 원시타입 데이터를 복사하기 때문에 기존의 데이터에 영향이 가지 않는다.

참조타입데이터는 주소를 복사한다.그렇기 때문에 기존의 데이터에도 영향이 간다.

여기에서 mutable, immutable의 차이가 나타난다.

string(문자열)은 immutable하며 객체,배열은 mutable 하다.

//문자열
let myName = '박지영';
let myName2 = myName;
myName2 = '박소영';

console.log('myName', myName); //'박지영'
console.log('myName2', myName2); //'박소영'
//배열
let myNameArr = ['박지영'];
console.log('myNameArr', myNameArr);//[ '박지영' ]
let myNameArr2 = myNameArr;
myNameArr2[0] = '박소영';
console.log('myNameArr', myNameArr);//[ '박소영' ]
console.log('myNameArr2', myNameArr2);//[ '박소영' ]

위와 같은 자바스크립트 코드가 있다.

위의 코드는 문자열이고 아래는 배열이다.

문자열의 경우 데이터보관함 한 칸에 저장되어 복사되기 때문에 myName2의 값을 재할당하여도 myName에는 영향이 가지 않는다.

하지만 아래의 배열(참조자료형)일 경우 myNameArr2의 0번째 요소만 재할당했는데도 불구하고 myNameArr까지 영향이 가는 것을 볼 수 있다. 변수에 같은 주소가 할당되기 때문이다. 이를 얕은복사라고 부르기도 한다.

 

참조자료형은 heap이라는 저장 공간을 사용한다.

'개발 > ' 카테고리의 다른 글

[리뷰] spread, rest, 구조분해할당  (0) 2022.05.13
[리뷰] Scope & Closure, 화살표함수  (0) 2022.05.13
[리뷰] 배열,객체  (0) 2022.05.10
[리뷰] Linux와 Node  (0) 2022.05.09
[리뷰] 간단한 웹앱 만들기  (0) 2022.05.06
Comments