7. Comparing primitive values ​​and objects

원시값과 객체 비교, 원시 타입과 객체 타입은 구체적으로 어떻게 다를까?

index

원시(primitive type) 타입

객체(object type) 타입



1. 원시(primitive type) 타입

원시타입(primitive type)의 값은 변경 불가능한 값(immutable value)이다. 한번 생성된 원시값은 읽기 전용 값으로서 변경할 수 없다.

🧐 Q. 변경이 불가능하다는 말은 무슨 의미일까?

변수와 값은 구분해서 생각해야 한다.

변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름이고,

은 변수에 저장한 데이터로서 표현식이 평가되어 생성된 결과를 말한다.

=> 변경 불가능하다는 것은 변수가 아니라 동일한 메모리 공간에 대한 값에 대한 진술이다.

Photo of object oriented language difference explanation

DeliverybyValue

Jay Tak.

만약 원시값이 변경 가능한 값이라면 변수에 새로운 원시 값을 재할당했을 때 변수가 가리키던 메모리 공간의 주소를 바꿀 필요없이 원시 값 자체를 변경이 가능해야 한다.

그러나 변수 값을 변경하기 위해 원시값을 재할당하면, 새로운 메모리 공간을 확보하고 재할당한 값을 저장한 후, 변수에 참조하던 메모리 공간의 주소를 변경해야 한다. 값의 이러한 특성은 ‘불변성(immutability)’]라 한다.



2. 객체(object type) 타입

객체타입(object type)의 값은 변경 가능한 값(mutable value)이다.

🧐 Q. 변경이 가능하다는 말은 무슨 의미일까?

객체를 할당한 변수는 해당 객체의 참조값을 가리키고 있기 때문이다.

Photo of object oriented language difference explanation

CommunicationbyReference

Jay Tak.

객체는 원시값과 다르게 여러개의 식별자가 하나의 객체를 공유할 수 있다. 따라서 원본 또는 사본 중 어느 한쪽에서 객체를 변경(객체의 프로퍼티 값을 변경하거나 프로퍼티를 추가, 삭제)하면 서로 영향을 주고 받는다. 객체의 이러한 특성은 ‘가변성(mutability)’]라 한다.  




reference: 모던자바스크립트 Deep Dive 11장. 원시값과 객체의 비교