원시타입과 참조타입 차이점

김우성·2021년 7월 29일
0

JavaScript

목록 보기
2/17
post-thumbnail

원시타입과 참조타입


원시타입


실험 1

hello wolrd를 str1 변수 안에 할당하고 str2에 str1을 할당하면 둘다 hello world를 가지고 있다.

즉, str1값이 그대로 str2에 할당이 된것

var str1 = "Hello world";
var str2 = str1;

실험 2

str1이라는 원본 데이터를 수정했을 때 str1만 변경이 되고 str2는 변경이 되지않는다

str1이라는 원본 데이터를 수정했을 때 복사본인 str2에 영향을 줄 수 없다.

str1 = "Nice";

console.log(str1);
console.log(str2);



원시타입의 특징

원본데이터를 수정했다고해서 복사본이 바뀌지 않는다.(그 반대도 마찬가지)

원본과 복사본 데이터 개념이 들어가 있는 데이터타입이 원시타입이라고 할 수 있다.




참조타입

실험 1

객체를 만들고 위와 똑같이 실험

var obj1 = {name: "Woosung"};
var obj2 = obj1;


실험2

데이터를 변경하게되면 둘다 바뀌게 된다.

반대의 경우도 마찬가지이다.

obj1.name = "Kim"

console.log(obj1);
console.log(obj2);


참조타입은 직접적으로 데이터를 변수 안에다가 넣어주는 것이 아니고 데이터를 메모리라는 저장소에 넣어둔다.

즉, obj1은 데이터를 가리키는 것이 아니라 데이터가 저장되어있는 주소를 말하는 것이다.

obj2도 obj1이 가리키는 있는 주소를 가리키도록 만들었기 때문에 주소를 공유하고 있는 것이다.




그림설명

obj1을 파란색에서 빨간색으로 변경한다고 해서 주소는 변하지 않는다. 변경이 없는 주소 안에서 색상만 바뀐 것.

그래서 obj1과 obj2가 동시에 변화가 되는것이다.

profile
매우 긍정적인 개발자

0개의 댓글

관련 채용 정보