tomei
Categories
Tags
620 words
3 minutes
원시값과 객체의 값 저장 동작
🩵 객체 안의 프로퍼티가 원시값을 가질 때, 메모리 동작 방식
let obj = { value: 10 }; // 객체 생성 (참조 타입)
let copy = obj; // 같은 객체를 참조 (참조값 복사)
copy.value = 20; // 프로퍼티 변경 (새 메모리 할당 X)
console.log(obj.value); // 20 (원본도 변경됨)
📌 객체 안의 프로퍼티는 원시 값을 가질 수 있지만, 객체 자체는 참조 타입이므로 프로퍼티를 변경해도 새로운 객체가 생성되지 않는다.
📌 반면, 원시 값을 변수에 직접 할당하면 새로운 메모리 공간을 할당받고 복사된다.
🚀 즉, “원시값의 불변성”은 유지되지만, 객체 프로퍼티는 새로운 메모리 공간을 할당하지 않고 바로 변경 가능하도록 동작한다.
🩵 자바스크립트에서 값이 원시 타입인지 객체 타입인지 판단하기 전에, 먼저 프로퍼티 여부를 확인하는가?
📌 실행 과정 (변수 선언 → 할당 → 타입 확인)
✔자바스크립트는 변수 선언을 먼저 실행(호이스팅)한 후, 코드 실행 순서대로 변수에 값을 할당할 때 원시 타입인지 객체 타입인지 판별한다.
✔할당된 값이 원시 값이면 “값 자체”를 저장하고, 객체면 “참조 값”을 저장한다.
✔변수에 접근할 때도 먼저 “객체인지 확인하고” 이후 원시 값인지 판단하여 적절한 동작을 수행한다.
정리
✔“변수에 저장된 원시값은 값 자체를 저장하지만, 객체 프로퍼티로 저장된 원시값은 객체 내부에서 관리되므로 새로운 객체가 생성되지 않는다.”
✔“자바스크립트는 변수 선언을 먼저 실행(호이스팅)한 후, 값이 할당될 때 비로소 원시 타입인지 객체 타입인지 판단한다.”
✅ 값에 의한 전달 vs 참조에 의한 전달 (핵심 차이 정리)
- 값에 의한 전달 (Pass by Value) → 값 자체를 복사하여 전달 → 서로 독립적 → 변경해도 원본에 영향 없음
- 참조에 의한 전달 (Pass by Reference) → 메모리 주소(참조 값)를 전달 → 같은 객체 공유 → 변경 시 원본도 영향받음
원시값과 객체의 값 저장 동작
softourr.github.io/원시값과-객체의-값-저장-동작.md