JavaScript에서 지원하는 데이터 타입은 크게 두 가지로 나눌 수 있습니다:

**기본형 (Primitive Type)**과 참조형 (Reference Type).

이 두 가지 타입은 메모리 관리 방식과 값 저장 방식에서 차이가 있습니다.

 

1. 기본형 (Primitive Type)

기본형 데이터 타입은 값 자체가 변수에 저장되는 데이터 타입입니다. 이 값들은 불변(immutable)하며, 변수에 할당된 값을 변경할 수 없습니다. 또한, 기본형은 비교 시 만을 비교합니다.

기본형 데이터 타입:

  • string: 문자열을 나타냅니다.
    • 예시: 'Hello, world!', "JavaScript"
    • 특징: 문자들의 집합이며, 불변(immutable)입니다. 즉, 문자열을 수정할 수 없습니다.
  • number: 숫자 값을 나타냅니다. 정수와 부동소수점을 모두 포함합니다.
    • 예시: 42, 3.14, -10
    • 특징: 숫자는 모두 IEEE 754 표준을 따르는 부동소수점 형식으로 저장됩니다.
    • 주의: NaN (Not a Number)과 Infinity, -Infinity 등의 특수한 숫자도 존재합니다.
  • boolean: 참(true) 또는 거짓(false)을 나타냅니다.
    • 예시: true, false
    • 특징: 논리값을 나타내며, 조건문에서 주로 사용됩니다.
  • undefined: 변수는 선언되었지만, 값이 할당되지 않은 상태를 나타냅니다.
    • 예시: let x; // x는 undefined
    • 특징: 변수는 선언되었지만 아직 값이 할당되지 않았을 때 자동으로 undefined 값이 됩니다.
  • null: 의도적인 빈 값을 나타냅니다. null은 객체가 없음을 명시적으로 나타내는 값입니다.
    • 예시: let y = null;
    • 특징: null은 "없음" 또는 "빈 값"을 의도적으로 할당할 때 사용되며, 객체가 아닌 원시 값입니다.
  • symbol: 고유하고 변경 불가능한 값을 생성하는 데이터 타입입니다. 주로 객체의 키로 사용됩니다.
    • 예시: let sym = Symbol('description');
    • 특징: 유일한 값을 생성하며, Symbol() 함수로 생성합니다. 다른 값들과 구별되는 고유한 값이기 때문에 주로 객체 프로퍼티의 고유 키를 만들 때 사용됩니다.
  • bigint: 큰 정수를 표현하는 데이터 타입입니다. JavaScript의 number 타입은 안전하게 표현할 수 있는 정수 범위가 제한적이지만, bigint를 사용하면 아주 큰 정수를 처리할 수 있습니다.
    • 예시: let big = 1234567890123456789012345678901234567890n;
    • 특징: 크기가 매우 큰 정수를 나타내며, 뒤에 n을 붙여서 선언합니다.
  • 2. 참조형 (Reference Type)참조형 데이터 타입:
    • object: 다양한 값을 속성으로 가질 수 있는 복합적인 데이터 타입입니다. 객체는 키-값 쌍으로 이루어집니다.
      • 예시:
        javascript
        코드 복사
        let person = { name: 'Alice', age: 30 };
      • 특징: 객체는 속성(property)을 가지며, 배열, 함수, 날짜 등 다양한 형태로 확장 가능합니다.
    • array: 배열은 객체의 한 종류로, 여러 값을 순서대로 저장할 수 있는 자료구조입니다.
      • 예시:
        javascript
        코드 복사
        let numbers = [1, 2, 3, 4];
      • 특징: 배열은 인덱스를 사용하여 값을 참조하며, 배열의 크기는 동적으로 변할 수 있습니다.
    • function: 함수도 객체로 취급됩니다. 함수는 일급 객체로, 변수에 할당하거나 다른 함수의 인자로 전달될 수 있습니다.
      • 예시:
        javascript
        코드 복사
        function greet(name) { return `Hello, ${name}!`; }
      • 특징: 함수는 호출 가능한 객체로, 인자를 받아서 결과를 반환할 수 있습니다.
  • 참조형 데이터 타입은 메모리 주소를 변수에 저장하는 데이터 타입입니다. 이 값들은 변경 가능(mutable)하며, 객체를 복사하거나 할당할 때 주소를 공유합니다.

3. 기본형 vs 참조형 차이점

특징기본형 (Primitive)참조형 (Reference)

값 저장 방식 자체가 변수에 저장됨 주소(참조)가 변수에 저장됨
메모리 관리 값이 복사되어 저장됨 주소가 복사되므로 객체를 공유함
변경 가능 여부 불변 (값을 변경할 수 없음) 변경 가능 (값을 수정할 수 있음)
비교 방법 을 비교 (예: a === b) 주소를 비교 (두 객체가 같은 주소를 가리키는지 확인)
예시 string, number, boolean, undefined, null, symbol, bigint object, array, function

 

 

결론:

  • 기본형 (Primitive Type): 값 자체가 저장되고, 변경할 수 없습니다. 비교 시 값만 비교합니다.
  • 참조형 (Reference Type): 주소가 저장되고, 변경할 수 있습니다. 비교 시 주소를 비교합니다.

이러한 차이점을 이해하는 것은 JavaScript에서 변수와 객체를 다룰 때 매우 중요합니다.

+ Recent posts