728x90
변수에 할당 시 저장되는 값
변수는 메모리 공간의 식별자입니다. 변수에 값을 할당할 때, 값이 원시 값이라면 메모리에 실제 값이 저장되고, 객체라면 참조 값(메모리 주소)이 저장됩니다.
변수를 다른 변수에 할당하는 경우
원시 값은 새로운 메모리 공간에 복사된 값이 저장되기 때문에 각 변수가 다른 메모리 공간을 가리킵니다. 반면, 객체는 메모리 주소를 나타내는 참조 값을 복사하기 때문에 각 변수는 같은 객체를 참조하게 됩니다. 이 때문에 한 변수에서 참조하는 객체를 변경하면 다른 변수에서도 변경 사항이 반영됩니다.
할당에 대한 표현
원시 값을 할당한 변수는 “변수는 **값을 갖는다”, “변수의 값은 **다”로 표현하고, 객체를 할당한 변수는 “변수는 객체를 참조하고 있다”, “변수는 객체를 가리키고 있다”고 표현합니다.
얕은 복사(shallow copy), 깊은 복사(deep copy)
중첩된 객체
얕은 복사는 객체의 첫 번째 레벨까지만 복사하는 것을 말합니다. 최상위 객체가 포함하는 프로퍼티가 원시 값인 경우는 복사를 하지만, 객체인 경우는 참조 값이 복사됩니다. 그렇기 때문에 복사한 새로운 객체에서 객체인 프로퍼티는 기존 객체와 동일한 메모리 주소를 공유합니다.
반면, 깊은 복사는 중첩된 객체까지 모두 복사하는 것을 말합니다. 기존 객체의 프로퍼티를 모두 새로운 메모리 공간을 마련하여 저장합니다. 즉, 새로운 객체는 기존 객체와 완전히 독립적인 객체가 됩니다.
변수에 값을 할당
객체를 할당하는 경우를 얕은 복사, 원시 값을 할당하는 경우를 깊은 복사라고도 합니다.
참고자료
- 모던 자바스크립트 Deep Dive
'Language > JavaScript' 카테고리의 다른 글
스코프 (0) | 2025.03.13 |
---|---|
함수 (0) | 2025.03.13 |
객체 리터럴 (0) | 2025.03.13 |
타입 변환과 단축 평가 (0) | 2025.03.13 |
제어문 (0) | 2025.03.13 |