데이터 유형: 원시 타입, 참조 타입

자바스크립트 데이터 유형 에는 2가지가 있습니다. 원시 타입, 참조 타입.

각 타입의 특징은 무엇이고 왜 두 타입으로 나뉘어 졌는지 정리해보았습니다.

정리를 위해 참고한 포스트는 글 하단을 참고해주세요.

원시 타입

원시 타입은 단순하고 불변한 데이터를 나타내며, 변수에 실제 값을 저장합니다.

불변형인데 변수 재할당시 데이터가 바꿀 수 있는 것은 주소값을 바꿔서 입니다.

원시 타입의 종류

  • 문자열(String): 텍스트 데이터.
  • 숫자(Number): 숫자 데이터.
  • 불리언(Boolean): 참(True) 또는 거짓(False) 값.
  • undefined: 값이 할당되지 않은 상태.
  • null: 값이 명시적으로 비어있음을 나타냄.
  • 심볼(Symbol): 고유하고 변경 불가능한 값.

원시 타입이 메모리에 저장되는 방식

원시 타입의 데이터 유형은 모두 스택 메모리에 저장됩니다.

Stack 메모리란?

함수 호출과 지역 변수 등을 처리하는 데 사용되며, 크기가 제한되지만 빠른 접근이 가능한 메모리 입니다.

Heap 메모리란?

동적으로 할당된 데이터를 저장하는 데 사용되며, 크기가 유연하지만 상대적으로 느린 메모리 접근 속도를 가집니다.

원시 타입의 복사

원시 타입 변수를 복사하면 기존 변수의 값이 새 변수에 복사됩니다.

그리고 새 변수의 값을 변경해도 다른 변수의 값에는 영향을 주지 않습니다.

// 원시 타입
let primitiveValue = "Hello"; // 문자열
let anotherPrimitiveValue = primitiveValue; // 값이 복사됨
anotherPrimitiveValue = "Bye";  // 문자열 변경

console.log(primitiveValue);  // Hello
console.log(anotherPrimitiveValue);  // Bye

참조 타입 (Reference type)

참조 타입더 복잡한 데이터 구조를 표현하며, 변수에는 데이터에 대한 참조(메모리 위치)가 저장됩니다.

참조 타입의 종류

  • 객체(Object): 키-값 쌍으로 이루어진 컨테이너.
  • 배열(Array): 여러 값을 담는 순서가 있는 리스트.
  • 함수(Function): 재사용 가능한 코드 블록

참조 타입의 복사

참조 타입은 값을 복사하는 게 아니라 주소 자체를 복사합니다.

이는 복사한 변수가 원본 변수와 동일한 것을 가리킨다는 의미입니다.

따라서 변수를 통해 값을 변경하면 해당 변수를 가리키는 모든 변수가 변경 사항에 반영됩니다.

// 참조 타입
let referenceValue = { key: "value" }; // 객체
let anotherReferenceValue = referenceValue; // 주소가 복사됨

anotherReferenceValue["key"] = "another value";  // 변수 값 변경

console.log(referenceValue);  // { key: 'another value' }
console.log(anotherReferenceValue);  //{ key: 'another value' }

참고할 만한 글

Leave a Comment

목차