[KDT]FCFE - 4주3일 데이터 불변성

Keunyeong Lee·2021년 12월 16일
0
post-thumbnail

데이터 불변성 ( Immutability )

원시 데이터

String, Number, Boolean, undefined, null , bigint , symbol

참조형 데이터

Object, Array, Function

불변성

원시 데이터는 변경 불가능하다.

변경 불가능한 값이기 때문에 값을 직접 변경할 수 없다.

변수에 할당한 원시 값을 변경하면 메모리에 있던 값이 바뀌는 것이 아니라 다른 곳에 변경된 값을 재할당하고 변수에 메모리 주소값을 변경한다.이것을 불변성이라고 한다.

let a = 1;
let b = 3;

console.log(a === b); // false

let b = 1;

console.log(a === b); // true

너무나 당연한 결과지만 불변성을 생각하며 다시 보자.

원시값은 변경할 수 없다.

b라는 변수에 3이라는 원시값 Number가 할당 되었다. 이때 변수에는 3이 저장된 메모리의 주소가 할당된다.

그 주소를 가르키던 b에 다시 1이라는 값을 할당하면 1이 저장된 메모리의 주소가 할당된다.

즉, 비교를 할 때 1이라는 값이 저장된 같은 메모리 주소를 가리키면 true를 반환한다.


의문! => js 는 같은 원시값도 새로운 메모리에 할당하고 서로 다른 메모리 주소를 갖는다고 알고 있는데 설명과 다르다.

참조형 데이터 공유

참조형은 데이터를 변경할 수 있다.

이러한 구조의 단점은 여러 식별자에 할당하고 하나의 객체를 공유하게 될 수 있다.

profile
🏃🏽 동적인 개발자

0개의 댓글