Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

자바스크립트 기본 데이터 타입(Primitive)과 객체(Object)의 차이점 완벽 정리

기본 데이터 타입(Primitive Data Type)이란?

두 개념의 차이점을 살펴보기에 앞서, 먼저 기본 데이터 타입(Primitive Data Type)이 무엇인지 이해할 필요가 있습니다. 기본 타입은 한 번 생성되면 값을 변경할 수 없는 불변(Immutable) 값으로 정의되며, ECMAScript 표준에서 도입된 개념입니다.

자바스크립트는 다음과 같은 세 가지 기본 데이터 타입을 제공합니다.

  • 숫자(Number): 예를 들어 3, 310.20 등
  • 문자열(String): 예를 들어 "이 텍스트 문자열" 등
  • 불리언(Boolean): true 또는 false

이 외에도 자바스크립트는 nullundefined라는 두 가지 특수한 데이터 타입을 정의하고 있으며, 각각 단 하나의 값만 가질 수 있습니다.

참고로 ES6(ECMAScript 2015)부터는 Symbol이, 그 이후에는 BigInt가 추가되어 현재 자바스크립트의 기본 타입은 총 7가지입니다.

이러한 기본 데이터 타입들 외에도, 자바스크립트는 객체(Object)라는 복합(composite) 데이터 타입을 지원합니다.

객체(Object)란?

자바스크립트에서 객체는 속성(Property)들의 집합으로 간주됩니다. 각 속성은 고유한 키(Key) 값으로 식별되며, 객체의 속성은 두 가지 유형으로 나뉩니다.

1. 데이터 속성(Data Property)

데이터 속성은 하나의 키(Key)와 값(Value)을 연결합니다. 즉, 일반적인 방식으로 저장되는 속성입니다.

예를 들어, 동일한 문자열이라도 기본 데이터 타입과 객체로 선언하는 방식은 서로 다릅니다.

기본 데이터 타입(String)으로 선언하는 경우:

var str = "Demo string!";

객체(Object)로 선언하는 경우:

var str = new String("Demo string!");

위 예제에서 첫 번째 코드는 불변적인 기본 문자열 값을 생성하지만, 두 번째 코드는 String 래퍼 객체(wrapper object) 인스턴스를 생성한다는 점에서 근본적으로 다릅니다. 이것이 기본 타입과 객체의 핵심적인 차이 중 하나입니다.

2. 접근자 속성(Accessor Property)

접근자 속성은 키와 접근자 함수(accessor function), 즉 getter와 setter 함수를 연결합니다. 값을 직접 저장하는 대신, 함수를 통해 값을 읽거나 설정할 때 특정 로직을 실행할 수 있다는 점이 특징입니다.

정리

요약하면, 기본 데이터 타입은 불변적인 단순 값(숫자, 문자열, 불리언, null, undefined 등)을 다루고, 객체는 키-값 쌍으로 구성된 속성의 모음으로 참조(reference) 방식으로 동작합니다. 두 개념의 차이를 명확히 이해하면 메모리 관리와 값 복사 동작에서 발생하는 오류를 예방하고 더 견고한 코드를 작성할 수 있습니다.