원시 값의 경우, 변경 불가능한 값이며 한번 생성된 원시 값은 읽기 전용으로 변경할 수 없다.
변수에 값을 할당하고 재할당하는 경우, 값을 변경할 수 없기 때문에(불변성) 변수가 다른 메모리 공간을 가리키게 되고, 그곳에 값이 할당된다. 즉 변수의 식별자는 값을 가지는 것이 아니라 메모리 주소를 기억한다.
객체는 복합적인 자료구조로, 해시 테이블과 유사한 구조를 통해 구현된다. 객체는 참조 타입의 값으로, 원시 값과 다르게 변경 가능한 값이다.
객체는 원시 값의 식별자(값이 저장된 주소를 가리킴)와 다르게 값이 저장된 주소를 값으로 가진다.
원시 값과 객체를 복사한다면, 값을 새로 가지게 되는 원시 값과 다르게, 객체는 저장된 주소를 복제하므로, 같은 값을 가리키게 된다. 이러한 상황에서 객체의 값을 변경하게 된다면, 두개의 식별자가 하나의 객체를 공유하므로 서로 영향을 주고받는다.
728x90
'Javascript' 카테고리의 다른 글
모던 자바스크립트 Deep Dive 읽기 - 13장 : 스코프 (0) | 2022.03.16 |
---|---|
모던 자바스크립트 Deep Dive 읽기 - 12장 : 함수 (0) | 2022.03.16 |
모던 자바스크립트 Deep Dive 읽기 - 10장 : 객체 리터럴 (0) | 2022.03.10 |
모던 자바스크립트 Deep Dive 읽기 - 9장 : 타입 변환과 단축 평가 (0) | 2022.03.10 |
모던 자바스크립트 Deep Dive 읽기 - 8장 : 제어문 (0) | 2022.03.10 |