데이터 타입

AI
qwen-3-235b-a22b
작성자
익명
작성일
2025.07.31
조회수
4
버전
v1

JavaScript 데이터 타입

개요

JavaScript는 동적 타이핑(dynamically typed) 언어로, 변수의 데이터 타입이 실행 시점에 결정됩니다. 이 문서는 JavaScript의 기본 데이터 타입과 객체 타입을 체계적으로 설명하며, 각 타입의 특징과 사용법을 다룹니다. 프로그래밍 효율성을 높이기 위해 타입별 특성과 변환 규칙을 이해하는 것이 중요합니다.

데이터 타입 분류

JavaScript의 데이터 타입은 원시 타입(primitive type)객체 타입(object type) 으로 구분됩니다.

원시 타입

7가지 원시 타입은 다음과 같습니다: - [number](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/number/number): 숫자형 - [string](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/string/string): 문자열 - [boolean](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/boolean/boolean): 불리언 - [null](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/null/null): 의도적으로 값이 없음을 나타냄 - [undefined](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/undefined/undefined): 할당되지 않은 변수 - [symbol](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/symbol/symbol): 고유한 식별자 - [bigint](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/bigint/bigint): 큰 정수

객체 타입

모든 원시 타입을 제외한 나머지가 객체 타입입니다: - [Object](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/Object/Object): 일반 객체 - [Array](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/Array/Array): 배열 - [Function](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/Function/Function): 함수 - [Date](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/Date/Date), [RegExp](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/RegExp/RegExp) 등 내장 객체


원시 타입 상세 설명

1. 숫자형(Number)

JavaScript의 숫자형은 IEEE 754 64비트 부동소수점 형식을 따릅니다.

let age = 25;          // 정수
let price = 9.99;      // 실수
let infinity = 1 / 0;  // Infinity

특수 값 - [NaN](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/NaN/NaN): Not-a-Number (예: 0 / 0) - [Infinity](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/Infinity/Infinity), -Infinity

2. 문자열(String)

유니코드 기반의 텍스트 데이터입니다. 따옴표 종류에 따라 차이가 없습니다.

let name = "Alice";
let greeting = `Hello, ${name}`;  // 템플릿 리터럴

문자열 메서드

"Hello".toUpperCase()  // "HELLO"
"World".length         // 5

3. 불리언(Boolean)

참/거짓을 표현하는 2진 논리 타입입니다.

let isActive = true;
let isEmpty = false;

Falsy 값 - false, 0, "", null, undefined, NaN

4. null과 undefined

비교 항목 null undefined
의미 의도적 공백 미정의 상태
typeof "object" "undefined"

let user = null;       // 의도적 초기화
let password;          // 암시적 undefined

5. 심볼(Symbol)

고유하고 변경 불가능한 기본 데이터 타입로, 객체 속성 키로 사용됩니다.

const id = Symbol("id");
let obj = {
  [id]: 123
};

6. BigInt

2^53 - 1을 초과하는 정수를 표현할 수 있는 타입입니다.

let bigNum = 9007199254740991n;


객체 타입 상세 설명

1. 객체(Object)

키-값 쌍의 집합입니다.

let user = {
  name: "Bob",
  age: 30
};

속성 접근

user.name      // "Bob"
user["age"]    // 30

2. 배열(Array)

순서가 있는 데이터 집합입니다.

let fruits = ["apple", "banana"];
fruits[0] = "orange";

배열 메서드

fruits.push("grape");
fruits.length  // 3

3. 함수(Function)

일급 객체로, 변수에 할당 가능하고 매개변수로 전달 가능합니다.

function greet(name) {
  return `Hello, ${name}`;
}


타입 검사와 변환

typeof 연산자

typeof 42            // "number"
typeof "JS"          // "string"
typeof Symbol()      // "symbol"

제한 사항 - null → "object" (역사적 오류) - 배열 → "object"

instanceof 연산자

객체의 프로토타입 체인을 확인합니다.

[] instanceof Array  // true

타입 변환

암시적 변환 예시

5 + "5"    // "55"
"5" - 2    // 3

명시적 변환

Number("123")    // 123
String(123)      // "123"
Boolean(0)       // false


최신 타입 관련 기능

옵셔널 체이닝(Optional Chaining)

user?.address?.city  // undefined 반환

Null 병합 연산자(Nullish Coalescing)

let name = null ?? "Guest";  // "Guest"


참고 자료

  1. MDN JavaScript Data Types
  2. ECMAScript 2023 명세서
  3. "You Don't Know JS" 시리즈 - Kyle Simpson

이 문서는 ECMAScript 2023 기준으로 작성되었습니다.

AI 생성 콘텐츠 안내

이 문서는 AI 모델(qwen-3-235b-a22b)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?