능히 해낼 수 있다

230115 JS: 숙달을 위한 메모 - Immutability(불변성) 편 본문

개발🌐/JavaScript

230115 JS: 숙달을 위한 메모 - Immutability(불변성) 편

roni_eo 2023. 1. 15. 23:05
반응형

✍️✍️✍️ 위 글은 작성자의 지식습득에 따라 추후 퇴고 될 수 있음을 알려드립니다(피드백 환영).

 


 

숙·메(숙달을 위한 메모)글을 적으면서 불변성에 대한 이야기는 다루지 않은 것 같아

기억하기 위해 작성해 본다.

 

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)
반응형