반응형
Primitive Type and Reference Type
Primitive Type
원시형 타입 (numbers, booleans, string) 재할당하거나 변수를 다른 변수에 저장할 때마다 값을 복사한다.
객체와 배열은 참조형 자료 타입이다.
그렇다면 다른 타입은 복사를 하지 않는 다는 것인가?
맞다, 아래와 같이 코드를 작성할 때
객체 person은 메모리에 저장되어 있고, 상수 person에는 메모리의 주소를 가리키는 포인터를 저장한다.
그래서 위의 코드처럼 secondPerson에 값을 복사(?)하고 person.name을 바꾸면
secondPerson에는 이미 값이 할당 되어서 기존의 값인 'Max'가 출력될 것이라고 예상할 수 있지만
아까 말한 것처럼 값을 그대로 복사하는 것이 아니라 값이 위치한 그 포인터의 주소를 가리키는 것이기 때문에 그대로 객체가 저장된 곳을 가리켜서 변경된 값 그대로 출력하게 된다.
배열의 경우도 마찬가지다
따옴표를 복사한 다음 배열의 원소를 변경하면
예상치 못했던 결과를 초래할 수 있기 때문에 이것은 리액트에서 중요하다
만약 객체나 배열을 이렇게 복사한다면, 한 앱에 있는 주소에서 객체를 조작할 수 있기 때문에
실수로 앱의 다른 주소에 있는 같은 객체를 다르게 사용하도록 조작할 수도 있게 된다.
즉 하나를 변경했는데 그냥 변경 여부 없이, 값만 가져다 쓰고 싶었던 다른 객체의 값이 변경될 수 있기 때문에 변경할 수 없는 방법으로 복사하는 법을 배울 것이다
=> 포인터가 아닌 객체를 복사하는 것
스프레드 연산자를 이용할 수 있다.
객체와 배열은 참조형 타입
재할당은 값이 아닌 포인터를 복사하는 것
진짜 복사 = 전체 객체가 아닌 프로퍼티 각각을 복사해야 함.
반응형
'온라인 강의 > React 완벽 가이드 [Udemy]' 카테고리의 다른 글
21. 마무리 (0) | 2023.05.31 |
---|---|
20. 배열 함수 새로 고침 (0) | 2023.05.31 |
18. 구조분해할당(Destructuring) (0) | 2023.05.31 |
17. 스프레드 및 나머지 연산자 (0) | 2023.05.31 |
16. 클래스, 속성 및 메서드 (0) | 2023.05.31 |