-
[자바스크립트] 불변성언어/자바스크립트 2023. 5. 24. 20:50

이미지 출처: http:// https://velog.io/@imjkim49/자바스크립트-데이터-타입-정리
자바스크립트게서 값의 타임은 크게 기본형, 참조형으로 구분 된다.
구분 기준은 값의 저장 방식 과, 불변성의 여부 이다.
불변성 (Immutable type)
문자그대로 불변의 데이터. 한번 생성하고나면 그 뒤에는 변할 수 없다.
기본형의 6개는 전부 불변한다.
이 값들은 메모리 안에서 변경이 불가능하며 변수에 할당할 때 완전히 새로운 값이 만들어져 재할당 된다.
여기서 잠깐, const 는 재선언, 재할당이 불가능 하다.그렇다면 불변성을 가지지 않는가?
값에 대한 '참조'(가리키는 것)가 한번 변수에 할당되고 나면 변할 수 없음을 의미하는 것이지 const 변수가 참조하고 있는 '값'이 불변한다는 것을 의미하지 않는다
const person ={name : "Kim",age : 24}person.name = "Juon"console.log(person) // { name : 'juon' , age :24 }console.log를 찍어보면 name데이터가 Juon으로 바뀐 것을 확일 할 수있다.
'Juon' 데이터가 새롭게 생성되고 person.name에 재할당 되었다.
따라서 객체 내부의 깊은 곳 까지의 재할당은 제어하지 않는다.
불변성을 지키는 것이 왜 중요한가?
위의 예시처럼 사용할 데이터가 어디서 어떻게 바뀌어가는지 흐름을 쫓아가기 어렵고,
곧 예기치 버그로 이어지게 만든다.
불변성을 지킨다면 내가 모르는 다른 어떤 곳에서 데이터가 바뀌었을 것이라는 의심없이 코드를
있는 그대로 이해할 수 있도록 돕는다.
불변성을 지키면서 데이터를 변화시킨다면, 예상이 가능하고 신뢰가 되는 코드가 될 수 있다.
나의 생각
그렇다면 대채 왜 불변성을 지키는 것이 중요할까?
값이 바뀌지 않으면 항상 같은 답이지만, 유연할 수 있으니 좋은게 아닌가 라는 생각을 했었으나.
오늘 공부를 하고 알게되었다. 데이터가 바뀌는 것은 유연한게 아니라 오류가 생기는 코드이며,
다른 사람의 이해를 방해 하는 것이다.
결국은 더 깔끔하고 누군가가 봐도 직관적이며, 오류가 적은 코드를 작성하기 위한
조건 중 하나 라는 것이다. 열심히 익혀놓자
'언어 > 자바스크립트' 카테고리의 다른 글
반복문 map(), filter(), find (0) 2023.06.01 [자바스크립트] 불리언(Boolean) (2) 2023.05.25 JS (자바스크립트) for 반복문 (0) 2023.05.06 JS (자바스크립트) 조건문 (0) 2023.05.06 JS (자바스크립트) 함수 (1) 2023.05.06