1. let
// number이라는 변수명에 숫자 2를 할당
let number = 2;
// number, string, boolean, null, undefined, symbol / 가장 작은 단위
// 변수명은 의미 있게 작성하는게 좋다
let age = 24;
// 변수를 생성하고 초기화를 하면 메모리에 data를 적재하게 된다
let number = 2; // 2
let number2 = number; // 2
number2 = 3; // 3
// number2를 위한 메모리에 공간이 할당이 된다
// number2에는 number의 data가 복사되어 할당된다
// number === 2 , number2 === 3
// object(array, Math, function ...) / 큰 단위
// obj라는 변수에는 key가 name이고 value가 'ellie'인 값과 age에 5인 값이 할당된다
let obj = {
name : 'ellie',
age : 5
};
// 메모리에는 name에 해당되는 메모리가 할당되고 안에는 ellie가 대입
// 메모리에는 age에 해당되는 메모리가 할당되고 안에는 5가 대입
// 그렇게 할당된 메모리를 묶어서 이것들을 나타낼수 있는 주소 Referenc가 있다
// obj라는 변수의 메모리에는 위의 Referenc가 할당 된다
console.log(obj.name); // ellie
let obj2 = obj;
// obj2라는 변수에 메모리가 할당이 되고
// obj2 메모리 안에는 obj의 ref값이 복사되어 할당 된다
console.log(obj2.name); // ellie
//* 기본적인 데이터 타입(number, string, boolean, null, undefined, symbol)의 경우는
//* 데이터 값(value)가 그대로 복사되어 다른 변수에 할당이 되지만
//* object는 변수에 value가 아닌 ref가 할당이 되고
//* ref는 각 각의 value 값을 가리키는 주소이기 때문에
//* 다른 변수에 object의 ref 값이 복사 되면
//* 기존의 key, value 값에 간섭하게 된다
obj.name = 'james'; // james
console.log(obj.name); // james
console.log(obj2.name); // james
2. const
// let 변수는 값을 계속 변경 할 수 있다
let a = 2;
a = 5;
a = 9;
// const 상수 변수는 한번 할당 후에는 변경 할 수 없다
// const는 선언과 함께 초기화를 해주어야 한다
const b;
b =3;
// object를 const로 할당하여 상수로 만들게 되면
// 상수 변수 obj에는 ref라는 주소가 할당이 됩니다!
const obj = {
name : 'ellie',
age : 5
}
// 상수 변수 obj에는 자체의 ref를 변동하는것은 불가능 하다!
obj = {
name : 'james',
age : 7
}
// 대신에 ref를 변경하는것이 아닌 ref가 가리키는 메모리의 값은 변동이 가능하다
obj.name = 'james';