// number, string, boolean, null, undefined
let number = 2;
let number2 = number;
console.log(number);
console.log(number2);//call by value(메모리에 값 자체 복사)
number2 = 3;
console.log(number);
console.log(number2);
// object : primitive type 아니면 다 object
// object가 담긴 메모리는 따로 있고(변수 메모리 공간에 저장되긴 너무 큰 데이터라),
// obj 변수의 메모리에는 주소값이 저장된다.
const obj = {
name:'ellie',
age: 5
}
console.log(obj.name);
let obj2 = obj;
obj2.name = 'park'; //call by reference: 주솟값이 복사되며, 복사본 바꾸면 원본도 바뀜.
console.log(obj.name);
// const로 선언한 객체는 변경이 어떤 때 가능? 어떤때 불가?
// const로 선언한 변수 내에는 객체의 reference(주소값)이 담겨있다.
const obj = {
name: 'dave',
age: 6
} // 이렇게 아예 다른 객체의 reference를 넣는 건 불가(컴파일 과정에서 SyntaxError 남)
// 하지만 잠긴건 이 ref에 대해서만이고, 원래 메모리의 위치는 잠겨있지 않으므로
// 이렇게 원래 메모리 상의 key에 대한 value 바꿀 수 있다.
obj.name = '명성';