let number = 2; // 숫자
let num = '2'; // 문자열
let obj = {
name: 'alex',
age: 5,
};
console.log(obj.name); //alex 출력
let obj2 = obj;
console.log(obj2.name); //alex 출력
obj.name = 'james';
console.log(obj.name); //james 출력
console.log(obj2.name); //james 출력
primitive 타입은 데이터 자체가 변수에 담겨져있어서 복사되어 들어오지만
object는 object를 가리키고 있는 주소(reference)가 들어있어서 그 주소만 복사되어서 들어온다.
let a =2 ;
a = 5;
const num = 2;
num = 4; // 이거 안됨
let은 값 변경 가능, const는 불가능
const obj = {
name: 'alex',
age: 5,
};
obj = {
name = 'james',
age: 7;
}
reference 자체를 다른 reference로 바꾸는 것은 불가능!
const obj = {
name: 'alex',
age: 5,
};
obj.name = 'james';
obj가 가리키고 있는 name은 바꾸는 것이 가능!
<정리>
object는 object 자체가 담겨있는 게 아니라
어딘가에 따로 저장되어 있고 이것을 가리키고 있는 reference들이 들어있기 때문에
reference는 다른 object로 변경하는 것은 불가능하지만
reference가 가리키고 있는 object의 안 내용은 변경 가능!