자바스크립트에서 다루는 모든 값에는 자료형(타입)이 있습니다.
자료형은 값의 종류와 특징을 정의하고, 컴퓨터가 그 값을 어떻게 처리할지 결정하는 데 사용됩니다.
Q. 데이터 타입이 왜 중요할까?
- 값을 저장할 때 확보해야 하는 메모리 공간의 크기를 결정하기 위해
- 값을 참조할 때 한 번에 읽어야 할 메모리 크기를 정하기 위해
- 메모리에 저장된 2진수를 어떤 데이터로 해석할지 결정하기 위해
- → 예: 01000001을 문자로 보면 'A', 숫자로 보면 65
1. 원시 타입(Primitive Type)
값 자체가 하나로 구성되어 있고, 변하지 않는(immutable) 데이터입니다.
원시 타입은 값 자체를 저장하며, 복사 시 값이 복사됩니다.
타입 | 설명 |
number | 정수, 소수, NaN, Infinity 등 모든 숫자 |
string | 문자나 문자열 (예: "hello","abc") |
boolean | 참(true) 또는 거짓(false) |
undefined | 값이 할당되지 않은 상태의 기본값. 변수 선언만 했을 때 자동 할당됨 |
null | 일부러 값이 없음을 명시할 때 사용 |
symbol | 고유하고 변경 불가능한 값. 주로 객체 속성 키로 사용됨 |
bigint | 아주 큰 정수를 다룰 때 사용 (123456789012345678901234567890n) |
다른건 익숙해도 심볼이라는 타입이 생소할 수 있습니다.
ℹ️ symbol이란?
const id = Symbol("userID");
- Symbol()을 사용해 생성
- 중복되지 않는 고유한 값을 만들 수 있음
- 객체의 유일한 키(key)로 주로 사용됨
2. 객체 타입(Object Type)
여러 값을 묶어서 저장할 수 있고, 기능(메서드)도 함께 담을 수 있는 구조입니다.
객체 타입은 참조형이며, 변수에는 값의 주소(참조)가 저장됩니다.
타입 | 설명 |
Object | 키-값 쌍으로 구성된 데이터 (예: { name: '민수', age: 20 }) |
Array | 순서가 있는 값들의 집합 (예: [1, 2, 3]) |
Function | 코드 블록을 값처럼 다룰 수 있음 (예: function() {}) |
ℹ️ undefined vs null
겉보기에는 같아 보이지만 실제로는 의미나 쓰임새에 차이가 있습니다.
겉보기에는 같아 보이지만 실제로는 의미나 쓰임새에 차이가 있습니다.
- undefined: 초기화되지 않은 변수에 자동으로 할당됩니다. 자바스크립트가 자동으로 할당합니다.
- null: 의도적으로 없음을 표기합니다. 개발자가 명시적으로 설정합니다.
Tip: typeof 연산자
typeof 1 // "number"
typeof "hi" // "string"
typeof true // "boolean"
typeof undefined // "undefined"
typeof {} // "object"
typeof [] // "object"
typeof Symbol("id") // "symbol"
typeof Math // "object" (1)
typeof null // "object" (2)
typeof alert // "function" (3)
여기서 주의해야할 포인트!!
- Math는 자바스크립트가 제공하는 수학 계산 도구, Math도 사실은 내장된 객체입니다.
- 자바스크립트에서 typeof null이 "object"를 반환하는 것은 초기 설계 시 생긴 오류입니다. null은 객체가 아니지만, 호환성 문제로 인해 지금까지도 고쳐지지 않고 유지하고 있습니다.→ 하위 버전과 호환성(=기존 코드 깨지지 않게 하기 위해)
- 자바스크립트에서 함수도 사실은 특별한 종류의 객체 입니다.(사실 "function"이라는 타입은 따로 존재하지 않지만, typeof가 특별히 구분해서 알려줍니다.)
'기술 > JavaScript' 카테고리의 다른 글
자바스크립트 연산자(Operators) (1) | 2025.06.08 |
---|---|
자바스크립트의 '동적 타이핑'과 '형 변환'에 대하여 (1) | 2025.05.29 |
변수 선언 방식과 var, let, const 의 차이를 알아보자 (2) | 2025.05.28 |
변수란 무엇인가? (0) | 2025.05.28 |
자바스크립트란? (1) | 2025.05.28 |