aotoyae

[JS] 데이터의 불변성 : 원시 데이터, 참조형 데이터 본문

JavaScript

[JS] 데이터의 불변성 : 원시 데이터, 참조형 데이터

aotoyae 2024. 1. 23. 21:10

 

 

💡 데이터의 불변성에 대해 알아보자

 

원시 데이터 : 숫자, 문자, 불리언..

 

원시 데이터들은 같은 값을 저장하면 그 값의 같은 주소 적어둔다.

 

number1 = @111 ➡️ @111 = 1

number2 = @111 ➡️ @111 = 1

 

 

참조형 데이터 : 배열, 객체, 함수..

참조형 데이터들은 같은 값을 저장해도 각각의 다른 주소를 적어둔다.

그리고 그 주소들은 같은 값을 바라보는 같은 주소에 다시 연결된다.

 

obj1 = @222 ➡️ @222 = @333 ➡️ @333 = name: 1

obj2 = @777 ➡️ @777 = @333 ➡️ @333 = name: 1

 

 

💡 데이터를 수정해보자

원시 데이터는 값이 바뀌면 바로 연결된 주소를 바꾼다.

 

number1 = @444 ➡️ @444 = 2

number2 = @111 ➡️ @111 = 1

 

❗️ 그래서 같은 값이었던 number2 에 영향을 주지 않고,
불변성이 있다, 즉 변하지 않는다는 특성이 있다.

 

 

 

참조형 데이터는 obj 가 바라보는 주소가 바라보는 주소가 바뀐다..

 

obj1 = @222 ➡️ @222 = @555 ➡️ @555 = name: 3

 

❗️ 그래서 불변성이 없다, 즉 변한다는 특성이 있다.

// 만약 obj1 을 복사했었다면?
let obj3 = obj1; // {name: 1}

// ... obj1.name 값 바꾼 뒤
console.log(obj3.name); // 3 obj3의 값도 바뀌었을 것.