ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [자바스크립트] 불변성
    언어/자바스크립트 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에 재할당 되었다.

    따라서 객체 내부의 깊은 곳 까지의 재할당은 제어하지 않는다.

     

    불변성을 지키는 것이 왜 중요한가?

    위의 예시처럼 사용할 데이터가 어디서 어떻게 바뀌어가는지 흐름을 쫓아가기 어렵고,

    곧 예기치 버그로 이어지게 만든다.

     

    불변성을 지킨다면 내가 모르는 다른 어떤 곳에서 데이터가 바뀌었을 것이라는 의심없이 코드를

    있는 그대로 이해할 수 있도록 돕는다.

     

    불변성을 지키면서 데이터를 변화시킨다면, 예상이 가능하고 신뢰가 되는 코드가 될 수 있다.

     

    나의 생각

    그렇다면 대채 왜 불변성을 지키는 것이 중요할까?

    값이 바뀌지 않으면 항상 같은 답이지만, 유연할 수 있으니 좋은게 아닌가 라는 생각을 했었으나.

    오늘 공부를 하고 알게되었다. 데이터가 바뀌는 것은 유연한게 아니라 오류가 생기는 코드이며,

    다른 사람의 이해를 방해 하는 것이다.

     

    결국은 더 깔끔하고 누군가가 봐도 직관적이며, 오류가 적은 코드를 작성하기 위한

    조건 중 하나 라는 것이다. 열심히 익혀놓자

Designed by Tistory.