
객체가 아니면서 method를 가지지 않는 6가지의 타입
string,number,bigint,undefined,symbol, (null)
'string', 42, true, undefined... // string, number, boolean, undefined
식별자로 참조할 수 있는 메모리 상의 값
array([ ]),object({ }),함수(function( ) { })
heap )이라 한다.let a = [4,5,6]; // 변수 a에는 배열 [4,5,6]이 저장된 heap의 주소값 할당.
console.log(a[0]); // 주소값을 통해 데이터를 읽을 수 있음.
원시 자료형을 복사하면 데이터를 독립적인 메모리 공간에 할당하기 때문에, 복사본의 값을 수정해도 기존의 데이터를 저장한 변수에는 영향이 없다. 이처럼 실제 값을 복사하는 것을 깊은 복사라고 한다.
let a = 'a';
let b = a;
console.log(a); // output : 'a'
console.log(b); // output : 'a'
b = 'b';
console.log(a); // output : 'a'
console.log(b); // output : 'b'
// 복사한 데이터를 변경해도 기존의 데이터는 상관 X
참조 자료형은 변수에 객체를 참조할 수 있는 주소값을 담고있기에, 복사본에도 동일한 주소값이 할당되게된다. 그러므로 복사본의 데이터를 변경하게 되면 원본 객체의 데이터도 변경되게 된다. 이처럼 객체의 참조값(주소값)을 복사하는 것을 얕은 복사라고 한다.
let a = {
name : 'jun';
country : 'Korea';
}
let b = a;
console.log(a) // { name : 'jun', country : 'Korea' }
console.log(b) // { name : 'jun', country : 'Korea' }
b.name = 'zun';
console.log(a) // { name : 'zun', country : 'Korea'}
console.log(b) // { name : 'zun', country : 'Korea'}
// b객체의 name의 value를 변경했지만, a객체에도 영향을 끼쳤다.