원시타입 vs 객체타입 부분 질문있습니다.
안녕하세요 원시타입과 객체타입 강의를 보다가 궁금한점이 생겨 질문을 드립니다.
let p1 = 1;
let p2 = p1;
p2 = 2;
이렇게 1에서 2로 재할당을 하면 메모리상에는 원래 1이 있었는데 새로운 메모리에 2가 추가가 되면서 해당 공간을 가리키는데 메모리 공간에 저장되어 있던 1은 수정되지 않는다...라고 이해하고 있습니다. 그럼 여기서 1은 수정만 되지 않을 뿐 없어지지 않고 그대로 1이 저장이 되어있는건가요?
그리고 객체타입에서는 값을 변경하면 원본이 바로 변경되므로 안전하게 ... 스프레드로 값을 복사해서 사용한다라는 설명이 맞나요?
답변 2
0
안녕하세요 이정환입니다.
네 잘 이해하셨습니다. 원시타입의 값은 메모리상에서 직접 수정되지 않습니다. 반면 객체타입의 경우 메모리상에서 값이 직접 수정됩니다 이 역시 말씀하신 내용이 맞습니다.
따라서 해당 객체를 참조하고 있는 여러 변수의 값이 동시에 변경될 수 있어 안전한 객체 복사를 위해서는 깊은 복사를 사용하셔야 합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 부드러운 족제비님.
자바스크립트에서 원시타입과 객체타입의 메모리 관리 방식에 대한 질문을 주셨네요. 먼저 원시타입에 대해 설명드리겠습니다.
원시타입
원시타입의 경우, 변수에 값을 할당할 때마다 값 자체가 복사됩니다. 즉, p1과 p2는 각각의 메모리 공간에 독립적으로 값을 가지고 있습니다. 따라서 p2 = 2로 재할당하면 p1이 가리키는 값 1은 여전히 메모리에 남아 있습니다. 다만, 더 이상 p2는 그 값을 참조하지 않습니다. 이 때, 가비지 컬렉터가 1을 참조하는 변수가 없다는 것을 확인하면 해당 메모리를 회수할 수 있습니다.
객체타입
반면, 객체타입은 변수에 참조값(메모리 주소)를 저장하며, 이 때문에 동일한 객체를 여러 변수가 참조할 수 있습니다. 하나의 변수에서 객체 내부의 값을 변경하면 해당 객체를 참조하는 다른 변수들에서도 변경사항이 반영됩니다.
객체를 얕은 복사으로 새로운 메모리 공간에 독립적으로 저장하고 싶다면 스프레드 연산자(…)를 사용합니다. 이는 객체의 첫 번째 레벨만 독립적으로 복사하며, 중첩 객체들은 여전히 참조를 유지합니다.
관련 답변
이와 관련된 문의는 원시 타입 데이터 할당에 관한 질문에서도 다루어졌습니다. 여기서 강사님께서 원시 타입이 “값에 의한 복사”로 처리된다는 점을 설명하고 계십니다.
얕은 복사와 깊은 복사에 대한 질문에서는 얕은 복사와 깊은 복사에 대한 일반적인 혼란과 정의에 대해 다루고 있으며, 스프레드 연산자의 사용에 대한 추가적인 논의로 도움을 받을 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
useEffect와 lifecycle문의
0
26
2
프론트엔드 학습 수준 문의
0
37
2
리액트 챕터별 코드에서 eslint 설정파일이 없어요
0
47
2
데이터 로딩중 화면만 계속 나와요!!
0
54
2
퍼블리셔일경우 어느정도 수준까지 강의를 들어야할까요
0
79
2
이후의 커리큘럼 문의
0
102
2
실슬환경 설정에서 save후 console.log 부분이 새로고침이 안되는현상입니다.
0
50
2
최적화 관련 질문있습니다 (useMemo 등)
0
84
3
프로바이더 컴포넌트의 위치는 어떤 기준인가요?
1
82
3
Date 객체에 관련하여 질문드립니다.
0
85
2
리액트 개정판 교재 질문
0
60
2
예제코드가 안나와요!
0
78
2
select a variant 선택에서 javascript와 javascript+react compiler 중 무엇을 선택해야하나요? com
0
108
2
onMouseEnter 관련 문의 드립니다
0
92
3
배열의 렌더링 관련 질문 드립니다.
0
73
2
2:40초 refObj를 콘솔로 출력시 오류가 발생합니다.
0
112
2
TS, 리액트 강의중에 뭘 먼저 수강하는게 좋을까요?
0
135
2
useCallback 적용한 onCreate, onUpdate, onDelete 함수..
0
69
1
vs code 자동완성관련 문의
0
112
2
91강 useEffect내에서 상태변화함수 호출시 발생하는 에러
1
178
2
87강 필터 함수 질문
0
68
2
useRef, useState count 비교
0
67
2
안된다고했던 이유가 무엇이었는지 모르겠습니다
0
90
2
85강에서 객체를 왜 클래스로 만들어서 new 하지 않는건지 궁금합니다.
0
75
2





