능히 해낼 수 있다
230115 JS: 숙달을 위한 메모 - Immutability(불변성) 편 본문
반응형
✍️✍️✍️ 위 글은 작성자의 지식습득에 따라 추후 퇴고 될 수 있음을 알려드립니다(피드백 환영).
숙·메(숙달을 위한 메모)글을 적으면서 불변성에 대한 이야기는 다루지 않은 것 같아
기억하기 위해 작성해 본다.
Immutability(불변성)이란, 단어 그대로 변하지 않는 것을 의미하는데,
한 번 생성되고 나면 그 뒤에는 변할 수 없고, 이 값은 메모리영역 안에서 변경이 불가하고,
변수 할당 될 때, 완전히 새로운 값이 만들어져 재할당된다
(내가 이해한대로 풀어 설명해보자면 같은 메모리 주소에 새로운 값이 들어 가기도 하고 + 겉모습이 같기도 해서 true가 나오기도 한다!)
데이터는 크게 원시형, 참조형 데이터가 있다.
원시데이터 : String, Number, Boolean, undefined, null
참조데이터: Array, Object, Fuction(callback)
원시데이터 Memory Addresse
1: 1 | 2: 4 | 3: 7 | 4: | 5: | ..... |
//let은 재할당 될 수 있다는 것 잊지 말기
let aa = 1;
let bb = 4;
console.log(aa, bb, aa===bb);
//>> 1 4 false: 변수때문에 같아보일 수 있으나, 서로 다른 메모리 주소를 바라보고있기때문에 다름
bb = aa;
console.log(aa, bb, aa===bb);
//>> 1 1 true: 같아서 ture라고 볼 수도 있으나, 바라보는 메모리 주소가 같아서 ture이기도함
aa = 7;
console.log(aa, bb, aa===bb); //>> 7 1 false
let cc = 1;
console.log(bb, cc, bb===cc);
//>> 1 1 false: 생긴게 같기도하지만, c가 1번 메모리 주소를 바라보고 있기도 해서 같음
참조데이터 Memory Addresse: 데이터 복사가 아니라 메모리의 참조주소만 옮겨 간다
1: { k : 1 } | 2: { k : 1 } | 3 : { } | ..... |
//let은 재할당 될 수 있다는 것 잊지 말기
let a = {k : 1}; // 1번의 메모리주소
let b = {k : 1}; // 2번의 메모리 주소
console.log(a, b, a===b); //>> 각각의 메모리 주소가 다르므로 false
a.k = 7; //>> 1번 메모리주소에 들어간 내용이 k : 7
b = a;// >> 7 = 7
console.log(a, b, a===b); //>> b=a이기때문에 같은 1번 주소를 보고있음 그래서 true
a.k = 2;//>> 2, 2
console.log(a, b, a===b);
//>> 1번 메모리 주소를 보고있던 a가 2로 바뀌어서 b도 마찬가지로 2 2===2 true
let c = b; // >> c = 2인데, b는 1번 메모리주소를 보고있음.
console.log(a, b, c, a===c); //>> 2 2 2===2 메모리 주소가 같아서 true
a.k = 9; //>> 9, 9, 9 위와 마찬가지로 같은 1번메모리 주소를 보고있음 true
console.log(a, b, c, a===c)
반응형
'개발🌐 > JavaScript' 카테고리의 다른 글
230115 JS: 숙달을 위한 메모 - SpreadOperator(전개연산자) 편 (0) | 2023.01.15 |
---|---|
230115 JS: 숙달을 위한 메모 - Object(객체) 편 (0) | 2023.01.15 |
230114 JS: 숙달을 위한 메모 - Statement(~문) 편 (0) | 2023.01.14 |
230113 JS: 숙달을 위한 메모 - Operator(연산자) 편 I (0) | 2023.01.13 |
230113 JS: 숙달을 위한 메모 - Variable(변수) 편 (0) | 2023.01.13 |