본문 바로가기
비개발자, CPO가 되기까지

19.12.22 개발기록 -[Javascript] Javascript Immutability(불변성)

by 뚜까망치 루크 2019. 12. 22.

자 오늘 포스팅할 내용은 무엇이냐~

Javascript Immutability ! 불변성에 대한 내용이다 !

불변성이란, 데이터 원본이 훼손되는 것을 막는 작업을 뜻한다. Javascript를 이용하여 프로그래밍을 진행할 때, 수많은 참여자가 있을 수 있고, 수많은 코드들이 작성되기 마련이다.

이때, 어떠한 데이터를 정해놓고, 불변하게 하기 위한 작업이라고 생각하면 되겠다.

특히나, 데이터가 수정 및 삭제되었을 때 범죄가 될 수 있는 경우에 반드시 이 불변성을 걸어주야 되지 않겠는가?

먼저 데이터 타입에 대해서 살펴보자.

위의 데이터 타입을 나눌 수 있다. - 출처: 생활코딩

크게는 Primitive (원시 타입)과 Object (객체) 로 나눌 수 있다.

먼저 원시타입은 더 이상 작은 단위로 쪼개질 수 없는 데이터 이고, 객체는 연관된 데이터들을 정리정돈하는 역할을 하는 녀석이다.

그리하여,

출처: 생활코딩

위의 p1 과 p2를 선언하여 값을 Number 데이터 타입인 1로 값을 지정해 주면, 컴퓨터는 같은 메모리에 p1 과 p2 를 저장하게 된다. 두개를 비교하면, p1 === p2 는 true를 반환하게 된다.

반면, o1 과 o2 같이 객체로 값을 만들어주면, 컴퓨터는 객체의 가변성을 생각하여, 둘의 값이 완전히 같다고 하더라도 메모리를 따로 할당하게 된다. o1 === o2 는 false를 반환한다.

여기서 객체에 조금 더 집중해보자.

출처: 생활코딩

가장 아래 var o3 = o1 을 하게 되면, o3 또한 o1과 같은 메모리를 가르키게 되고, 같은 값을 가지게 되는데, 만약 여기서 제일 아랫줄에서 볼 수 있는 o3.name = 'lee'를 실행하게 되면 o1의 원본 값을 바꾸면서, 자기 값을 바꾸게 된다.

원본을 바꾸지 않으면서 자신의 값만 바꾸는 방법은 무엇일까?

바로 원본을 복사하여 새로운 메모리에 할당하는 방법인데, 명령어는 바로

var o3 = Object.assign({}, o1);

이다. 위 명령어를 이용하면, o1을 복사하고 새로운 메모리에 할당하게 되어, o3를 아무리 변경해도, 원본에는 영향을 미치지 않게 된다.

다음 포스팅은 Nested Object (중첩된 객체) 이다.

오늘은 여기까지 !

 

이 포스팅을 보시는 분 중 제가 틀린 부분, 잘못 이해한 부분이 있어 알려주실만한 내용이 있다면 언제든 편하게 댓글 남겨주세요 :) 감사합니다 !

 

728x90
반응형

댓글