피드로 돌아가기
Dev.toFrontend
원문 읽기
JavaScript의 메모리 구조 기반 Primitive와 Reference Value의 동작 차이 분석
Primitive and Reference Values in JavaScript
AI 요약
Context
JavaScript 엔진의 데이터 처리 방식에 따른 메모리 할당 구조 차이로 인해 발생하는 런타임 동작의 불일치를 분석함. 특히 Immutable한 Primitive 값과 Mutable한 Reference 값의 구분 없이 변수를 다룰 때 발생하는 논리적 오류 가능성을 다룸.
Technical Solution
- Immutable Value 설계를 통한 Primitive 데이터의 직접 값 저장 및 변경 불가능한 특성 활용
- Memory Address Pointer 방식을 통한 Object, Array, Function의 Reference Value 관리 구조 채택
- const 키워드 적용 시 Reference Value의 경우 메모리 주소 자체는 고정하되 내부 속성 변경을 허용하는 유연한 데이터 구조 설계
- Symbol 타입을 통한 객체 속성의 고유 식별자 부여로 Identifier Collision 방지 및 런타임 안정성 확보
- BigInt 도입을 통한 2^53 - 1 범위를 초과하는 고정밀 정수 처리 능력 확보
- 참조 비교 시 값의 동일성이 아닌 메모리 주소의 일치 여부를 판별하는 얕은 비교(Shallow Comparison) 메커니즘 적용
실천 포인트
- 객체 간 값의 동일성 비교가 필요할 경우 참조 주소가 아닌 내부 속성별 개별 비교 로직 구현 여부 검토 - 대규모 정수 연산 필요 시 Number 타입의 한계를 파악하고 BigInt 적용 검토 - 객체 속성 이름의 충돌을 방지해야 하는 라이브러리 설계 시 Symbol 타입 활용 고려 - const로 선언된 객체의 내부 상태 변경 가능성을 인지하고 필요 시 Object.freeze() 등을 통한 완전한 불변성 확보