• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    해결됨

불변성의 개념이 잘 이해가 가지 않습니다.

22.09.19 10:17 작성 조회수 119

0

강의 2분 30초 쯤을 듣는데 #1과 #2가 본질적으로 무슨 차이인지 잘 이해가 가지 않습니다

결국엔 둘다 상태값을 오렌지,딸기,바나나로 바꿔버리는 것 같은데..#1은 불변성을 지키지 못하고 #2는 불변성을 지킨다는건 어떻게 이해해야하나요 ㅠㅠ

구글링해보니 어떤 값을 직접적으로 변경하지 않고 새로운 값을 만들어 낸다고 하는데..#1은 배열을 완전히 지웠다가 새로 만드는거고 #2는 지우지않고 딸기 부분만 끼워넣는 차이라고 보면 될까요?

 

 

답변 1

답변을 작성해보세요.

1

안녕하세요.

아래와 같이 fruits 배열이 있을 때

const fruits = ["딸기", "바나나"]

우리는 "오렌지"가 추가된 배열을 얻고자 합니다.

그럼 이때 fruits.push("오렌지"); 라고 쓴다면, fruits 배열은 ["딸기", "바나나", "오렌지"]가 되지만 이는 fruits 배열을 변경한 것이기에 불변성을 지키지 못한 사례입니다.

불변성을 지키기 위해, fruits 배열은 변경하지 않고 참조만 하여 새로운 배열을 만들어낼 수도 있습니다. 이때 기존 배열을 지우는 과정은 없습니다. 단순히 참조만 하는 거죠.

const fruits = ["딸기", "바나나"]
const newFruits = [...fruits, "오렌지"];

그럼 newFruits는 ["딸기", "바나나", "오렌지"] 값을 가지는 배열이 됩니다. fruits 배열은 변경되지 않았고 ["딸기","바나나"] 값을 그대로 가지고 있습니다.

살펴보시고 잘 이해가 안 되시면 추가 질문 주세요.

화이팅입니다. :-)