← 질문 목록
#337깊이 0

화면이 안 바뀌는데 값은 바뀌어 있는 경우가 있는가?

프론트엔드심화

있다. 원래 객체를 그대로 고치면 값은 바뀌지만 바뀐 줄 모른다.

  1. 코드
  2. 그다음은 상태입니다. 배열에 직접 밀어 넣는다

    상태
  3. 그다음은 비교입니다. 앞과 같은 객체다

    비교
  4. 그다음은 화면입니다. 바뀐 것이 없다고 보고 다시 안 그린다

    화면

바뀌었는지 볼 때 안을 하나하나 들추지 않는다. 상태는 같은 것을 가리키는지로 보고, 넘긴 값은 한 겹만 벗겨 견준다. 그래야 빠르기 때문이다.

그래서 새 객체로 갈아 끼워야 한다. 배열이면 새 배열을 만들어 넣고, 객체면 펼쳐 새로 만든다.

깊이 중첩된 곳을 고칠 때 특히 걸린다. 안쪽만 새로 만들고 바깥은 그대로 두면 바깥을 보는 쪽은 못 알아챈다. 바깥까지 새로 만들어야 한다.

참조 비교는 깊은 비교 비용을 피하려고 쓴다. 깊이 견주면 정확하지만 값을 바꿀 때마다 전부 훑어야 한다. 참조만 견주면 한 번에 끝난다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

화면이 안 바뀌는데 값은 바뀌어 있는 경우가 있는가?