← 질문 목록
#337깊이 0
화면이 안 바뀌는데 값은 바뀌어 있는 경우가 있는가?
프론트엔드심화
있다. 원래 객체를 그대로 고치면 값은 바뀌지만 바뀐 줄 모른다.
- 코드
그다음은 상태입니다. 배열에 직접 밀어 넣는다
상태그다음은 비교입니다. 앞과 같은 객체다
비교그다음은 화면입니다. 바뀐 것이 없다고 보고 다시 안 그린다
화면
바뀌었는지 볼 때 안을 하나하나 들추지 않는다. 상태는 같은 것을 가리키는지로 보고, 넘긴 값은 한 겹만 벗겨 견준다. 그래야 빠르기 때문이다.
그래서 새 객체로 갈아 끼워야 한다. 배열이면 새 배열을 만들어 넣고, 객체면 펼쳐 새로 만든다.
깊이 중첩된 곳을 고칠 때 특히 걸린다. 안쪽만 새로 만들고 바깥은 그대로 두면 바깥을 보는 쪽은 못 알아챈다. 바깥까지 새로 만들어야 한다.
참조 비교는 깊은 비교 비용을 피하려고 쓴다. 깊이 견주면 정확하지만 값을 바꿀 때마다 전부 훑어야 한다. 참조만 견주면 한 번에 끝난다.