본문 바로가기

자바스크립트

[Javascript] - 원시 값과 객체의 비교 (모던 자바스크립트 Deep Dive)

 

 

 

원시 타입과 참조 타입

 

원시 타입

  • 변경 불가능한 값 (Immutable Value).
  • 변수에 할당 시 실제 값이 저장.
  • 다른 변수에 할당 시 값이 복사되어 전달 (값에 의한 전달, Pass by Value).

참조 타입

  • 변경 가능한 값 (Mutable Value).
  • 변수에 할당 시 참조 값이 저장.
  • 다른 변수에 할당 시 참조 값이 복사되어 전달 (참조에 의한 전달, Pass by Reference).

 

원시 값

한번 생성된 원시 값은 읽기 전용 (Read Only)으로 변경이 불가능. 값 자체를 변경 불가능한 것이지, 변수는 언제든지 재할당을 통해 변수를 교체할 수 있다. const와 같은 상수는 재할당 역시도 불가능하다.

 

 

 

 

원시 값 재할당

원시 값을 재할당하면 이전의 원시 값을 변경하는 것이 아니다. 새로운 메모리 공간을 확보하고 재할당한 원시 값을 저장한다. 그 후 변수는 새롭게 재할당한 원시 값을 가리킨다. 따라서 변수가 참조하던 메모리 공간의 주소가 바뀐다.

 

 

문자열과 불변성

1개의 문자는 2바이트의 메모리 공간에 저장.몇 개의 문자로 이뤄졌는지에 따라 메모리 공간의 크기가 결정된다

반면 숫자는 1도, 100000도 모두 8바이트만 필요하다.

 

문자열은 유사 배열 객체이기 때문에 반복문 또는 인덱스 접근이 가능하다

 

 

하지만 문자열의 일부 문자는 변경되지 않는다.