티스토리 뷰

1. 원시 타입 (primitive)

원시 자료형이라고도 부른다.

객체가 아니면서 메서드도 가지지 않는 데이터

string, number, bigint, boolean, undefined, symbol, null

null과 undefined를 제외하고

모든 원시 값은 원시 값을 래핑한 객체를 갖는다.


모든 원시 값은 불변

변형 불가하다.

읽기 전용이다.

새로운 값을 다시 할당할 수 있지만

이미 생성한 원시 값은 변형 불가

 

1 -1. 원시값이 바뀌지 않는 이유


원본을 건드리지 않고 복사본을 가져와 작업하는 방식을 취해 

데이터의 신뢰성을 보장하기 위해서

 

원시값 자체를 변경할 수 없는 것이고

변수 값은 변경 가능하다.

변수는 언제든지 재할당을 통해 교체할 수 있다.

 

변수 값을 변경할 때
1. 원시 값을 재할당하면 새로운 메모리 공간이 확보된다.
2. 새로운 메모리 공간에 재할당 값을 저장한다.
3. 변수가 참조하던 메모리 공간의 주소를 변경한다.

 

2. 객체 타입 (object / reference)

데이터 및 데이터 작업에 대한 지침을 포함하는 데이터 구조

 

프로퍼티 개수가 정해져있지 않으며

프로퍼티 값에 제약이 없고,

메모리 공간 크기 역시 사전 정의 불가하다.

 

원시 값에 비해 상대적으로 많은 비용이 든다.

3. 차이

원시 값은 직접적인 변경이 불가하며, 객체는 직접 변경이 가능하다.

 

원시 값은 변경 불가능한 값으로

재할당 외의 방법이 없다.

재할당을 통해 메모리에 원시값을 새롭게 생성할 수는 있다.


객체는 메모리에

저장된 객체를 직접 수정 가능하며

재할당하지 않았으므로

할당한 변수의 참조 값은 변경되지 않는다.

 

재할당 없이

프로퍼티 동적 추가, 갱신, 삭제할 수 있다.

 

댓글