Javascript는 동적 타입 언어로, 변수의 타입은 프로그램이 실행되는 동안 결정되고 변경될 수 있다. 이 언어에서의 자료형으로는 기본적으로 원시 타입과 객체 타입의 두 가지 데이터 타입이 제공된다. 이들 각각의 특징과 차이점을 이해하는 것은 매우 중요하다. 본 블로그에서는 원시 타입과 객체 타입의 차이에 대해서 알아볼 것이다.

원시 타입

원시 타입(Primitive Types)은 기본적인 데이터 타입으로, 변경 불가능한 값(immutable values)을 의미한다. 자바스크립트에서 원시 타입에는 여섯 가지가 있다.

  1. Number: 모든 종류의 숫자를 포함한다.
  2. String: 텍스트 데이터를 나타낸다.
  3. Boolean: 참(true) 또는 거짓(false) 값을 가진다.
  4. Undefined: 정의되지 않은 값이다.
  5. Null: 의도적으로 비어 있는 값을 나타낸다.
  6. Symbol: ES6에서 도입된 고유하고 변경 불가능한 데이터 타입이다.

객체 타입

원시 타입을 제외한 모든 자료형이 객체타입(Object Types)이다. 객체 타입은 원시 타입과 달리 복잡한 데이터 구조를 표현할 수 있다. 객체는 프로퍼티(속성)의 집합으로, 각 프로퍼티는 키와 값으로 구성된다. 자바스크립트에서는 함수도 객체의 한 형태로 간주한다. 예시를 들어보겠다.

  1. Object: 키(Key)와 값(Value)을 가진 프로퍼티의 컬렉션이다.
  2. Array: 순서가 있는 값의 집합이다.
  3. Function: 실행 가능한 코드 블록이다.
  4. Date, RegExp 등의 내장 객체들도 있다.

원시 타입과 객체 타입의 차이

저장 방식
원시 타입은 값 자체가 변수에 직접 저장되지만, 객체 타입은 메모리에 객체가 저장되고 변수는 그 메모리 주소를 참조한다.

불변성
원시 타입의 값은 불변하지만, 객체 타입의 값은 가변적이다. 객체의 프로퍼티는 변경될 수 있다.

메모리 관리
객체는 크기가 가변적이며, 동적으로 관리된다. 원시 타입은 상대적으로 메모리 관리가 단순하다.

예제 코드를 통한 차이점 이해

// 원시 타입
let num1 = 100;
let num2 = num1;

num2 = 200;
console.log(num1); // 100. 원본 값이 변경되지 않음
console.log(num2); // 200

// 객체 타입
let obj1 = { value: 100 };
let obj2 = obj1;
obj2.value = 200;
console.log(obj1.value, obj2.value); // 200, 200. 참조된 객체자체가 변경됨. (같은 메모리 주소를 공유)
profile
프론트엔드 개발

0개의 댓글

Powered by GraphCDN, the GraphQL CDN