index
1. 원시(primitive type) 타입
원시타입(primitive type)의 값은 변경 불가능한 값(immutable value)이다. 한번 생성된 원시값은 읽기 전용 값으로서 변경할 수 없다.
변수와 값은 구분해서 생각해야 한다.
변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름이고,
값은 변수에 저장한 데이터로서 표현식이 평가되어 생성된 결과를 말한다.
=> 변경 불가능하다는 것은 변수가 아니라 동일한 메모리 공간에 대한 값에 대한 진술이다.

DeliverybyValue
Jay Tak.
만약 원시값이 변경 가능한 값이라면 변수에 새로운 원시 값을 재할당했을 때 변수가 가리키던 메모리 공간의 주소를 바꿀 필요없이 원시 값 자체를 변경이 가능해야 한다.
그러나 변수 값을 변경하기 위해 원시값을 재할당하면, 새로운 메모리 공간을 확보하고 재할당한 값을 저장한 후, 변수에 참조하던 메모리 공간의 주소를 변경해야 한다. 값의 이러한 특성은 ‘불변성(immutability)’]라 한다.
2. 객체(object type) 타입
객체타입(object type)의 값은 변경 가능한 값(mutable value)이다.
객체를 할당한 변수는 해당 객체의 참조값을 가리키고 있기 때문이다.

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