Primitive data type
변수에 값이 그대로 저장되는 데이터 타입
ex) 문자, 숫자
복사해보기
var 이름1 = '김';
var 이름2 = 이름1;
이름1 = '박';
-> 이름1은 '박', 이름2는 '김'이 출력됨.
Reference data type
: 변수에 reference가 저장됨.
reference : 화살표(경로)
ex) array, object
복사해보기
var 이름1 = {name : '김'};
var 이름2 = 이름1;
이름1.name = '박';
-> 이름1은 '박', 이름2도 '박'이 출력됨.
-> 값 자체가 저장되는게 아니라 메모리가 저장된 경로가 저장되기 때문에 이름1을 재할당하면 이름2도 같이 바뀜.
-> 복사하기 위해 object 복사 기계(constructor) 사용
var 이름1 = {name : '김'};
var 이름2 = {name : '김'};
이름1 == 이름2;
결과 : false
원인 : object 자체가 저장되는게 아니라 경로가 저장되는 것인데 object를 생성할 때 각각 다른 경로가 생기므로 같지 않음.
var 이름1 = { name : '김' };
function 변경(obj){
obj = { name : 'park' }
}
변경(이름1);
결과 : 값이 변경되지 않음.
원인 : 변경(이름1);는 변경(var obj = 이름1); 과 같은 의미임. 따라서 obj는 이름1이라는 object를 등호로 복사한 것이기 때문에 이름1의 경로인 { name : '김' }이 출력됨.(얕은 복사)