본문 바로가기

■ 프로그래밍/JavaScript

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

자바스크립트의 원시타입과 참조타입이 있다. 

 

원시타입은 숫자(Number), 문자열(String), 논리형(Boolean), Null, Undefined이고,

참조타입은 함수(Fucntion), 배열(Array), 객체(Object)이다. 

 

가장 큰 차이점은 참조타입의 경우 원본이 바뀌면 복사본도 똑같이 따라 바뀌는 반면, 원시타입은 그렇지 않다는 것이다. 

 

원시타입(Primitive type)

var str1 = 'today';
var str2 = str1; 

str1 = 'yesterday';

console.log(str1); // output: yesterday
console.log(str2); // output: today
str1을 'yesterday'로 재할당 하자, str1은 바뀐 값으로 출력되지만, str2는 처음에 할당했던 str1 값인 'today'로 출력된다. 

(+ 피드백 주신 '꿈을 이루는 사람'님 너무 감사드립니다)

 

참조타입(Reference type)

var obj1 = { name: 'mj' };
var obj2 = obj1;

obj1.name = 'kim';

console.log(obj1); // output: {name: 'kim'}
console.log(obj2); // output: {name: 'kim'}
기존 'mj' 였던 obj1(객체)를 'kim'으로 재할당하자, obj1, obj2 모두 'kim'으로 바뀌었다. 

 

원시타입은 우리가 워드 파일의 복사본을 만든것 처럼, 해당 값을 복사하여 서로 독립된 값을 가지며,

참조타입은 구글드라이브에 동기화된 파일을 수정하는 것처럼, 해당 주소를 참조하여 메모리에 저장된 것을 갖고와 참조한 값이 바뀌면 자동으로 바뀐다