자바스크립트 - 데이터 타입
🔅 Javascript - 데이터 타입
자바스크립트에서 데이터 타입은 변수가 저장할 수 있는 값의 종류를 정의 합니다.
자바스크립트는 동적 타입 언어이므로, 변수의 데이터 타입은 프로그램 실행 중에 할당된 값에 따라 변경될 수 있습니다.
자바스크립트의 데이터 타입은 크게 두 가지 범주로 나뉩니다:
기본 타입(Primitive types) 과 참조 타입(Reference types).
❗️ 기본 타입(Primitive types)
자바스크립트의 기본 데이터 타입은 간단하고 명확한 값을 나타내며, 각 타입은 고유한 특성과 용도를 가지고 있습니다.
기본타입에는 Number,String,Boolean,Undefined,Null,Symbol,BigInt 이 있습니다.
먼저 간단하게 표로 특징들을 보여드리고 하나씩 더 자세하게 알아볼까요?
📍 기본타입
| 데이터 타입 | 설명 |
|---|---|
| Number | 모든 종류의 숫자를 나타내며, 정수 및 부동 소수점 숫자를 포함합니다. |
| String | 문자열 데이터를 표현하며, 텍스트를 나타내는 데 사용됩니다. |
| Boolean | 논리적인 값인 true와 false만을 가질 수 있습니다. |
| Undefined | 변수에 값이 할당되지 않은 상태를 나타냅니다. |
| Null | ‘없음’ 또는 ‘유효하지 않은 값’을 나타내는데 사용되며, 의도적으로 변수를 비워두기 위해 사용됩니다. |
| Symbol | 고유하고 변경 불가능한 데이터 타입으로 주로 객체 속성의 식별자로 사용됩니다 (ES6 이후). |
| BigInt | 매우 큰 정수를 표현할 수 있는 데이터 타입입니다 (ES2020 이후). |
위에 내용들을 조금 더 자세하게 알아볼까요 ?
1. Number
📣 자바스크립트에서 모든 숫자, 즉 정수 및 소수점이 있는 숫자를 표현하는 타입입니다. 자바스크립트에서는 별도의 정수형 타입이 없으며, 모든 숫자를 부동 소수점 형태로 처리합니다.
예시
1
2
let integer = 10; // 정수
let float = 3.14; // 부동 소수점 숫자
2. String
📣 텍스트를 나타내는 데이터 타입으로, 문자열은 작은따옴표(‘ ‘), 큰따옴표(“ “) 또는 백틱( )으로 둘러싸여 있습니다.
문자열 내에서는 다양한 문자와 특수 문자를 포함할 수 있습니다.
예시
1
2
3
let greeting = "Hello, world!"; // 큰따옴표를 사용한 문자열
let name = 'John'; // 작은따옴표를 사용한 문자열
let message = `Welcome, ${name}`; // 백틱과 템플릿 리터럴을 사용한 문자열
3. Boolean
📣 논리적인 값을 나타내는 데이터 타입으로, true와 false 두 가지 값만을 가질 수 있습니다.
주로 조건문이나 반복문에서 조건을 평가하는 데 사용됩니다.
예시
1
2
let isStudent = true; // 참을 나타냄
let isLoggedIn = false; // 거짓을 나타냄
4. Undefined
📣 변수에 값이 할당되지 않았을 때의 기본값입니다.
변수를 선언만 하고 값을 할당하지 않으면 자동으로 undefined가 됩니다.
예시
1
2
let something;
console.log(something); // 출력: undefined
5. Undefined
📣 ‘값이 없음’을 의도적으로 표현할 때 사용하는 데이터 타입입니다.
null은 개발자가 변수에 아무런 값이 없음을 명시적으로 지정할 때 사용합니다.
예시
1
2
let empty = null;
console.log(empty); // 출력: null
6. Symbol (ES6 이후)
📣 고유하고 변경 불가능한 원시 값으로, 주로 객체의 고유한 속성 키로 사용됩니다. 같은 설명의 심볼도 각각 별도로 취급됩니다.
예시
1
2
3
let sym1 = Symbol("id");
let sym2 = Symbol("id");
console.log(sym1 === sym2); // 출력: false, 심볼은 모두 고유합니다
7. BigInt (ES2020 이후)
📣 기존 Number 타입으로 표현할 수 없는 매우 큰 정수를 다룰 때 사용하는 데이터 타입입니다. 숫자 뒤에 n을 붙여서 표현합니다.
예시
1
2
let largeNumber = 1234567890123456789012345678901234567890n;
console.log(largeNumber); // 출력
❗️ 참조 타입 (Reference Types)
참조 타입은 메모리에 저장된 객체를 가리키는 참조를 통해 사용됩니다. 이러한 값은 변경 가능한 값입니다.
자바스크립트의 참조 타입에는 다음과 같은 타입들이 포함됩니다
기본타입에는 Object,Array,Function,Date,RegExp,Map and Set 이 있습니다.
이번에도 먼저 표를 이름과 특징을 보여드리겠습니다!
📍 참조타입
| 참조 타입 | 설명 |
|---|---|
| Object | 가장 기본적인 참조 타입으로, 키와 값으로 구성된 프로퍼티의 집합입니다. |
| Array | 여러 개의 값을 순서대로 나열한 리스트 형태의 객체입니다. |
| Function | 실행 가능한 코드 블록을 나타내며, 호출 가능한 객체입니다. |
| Date | 날짜와 시간을 나타내는 객체입니다. |
| RegExp | 정규 표현식 객체입니다. |
| Map and Set | ES6에서 도입된 새로운 컬렉션 타입입니다. Map은 키-값 쌍을 저장하고, Set은 중복 없는 값의 집합을 관리합니다. |
위에 내용들을 조금 더 자세하게 알아볼까요 ?
1. Object
📣 자바스크립트에서 가장 기본이 되는 타입으로, 키-값 쌍의 컬렉션입니다.
객체 내에는 데이터와 함수를 포함할 수 있으며, 이를 각각 속성과 메소드라고 합니다
예시
1
2
3
4
5
6
7
8
9
let person = {
name: "Alice",
age: 25,
greet: function() {
console.log("Hello, my name is " + this.name);
}
};
person.greet(); // "Hello, my name is Alice" 출력
- 이 예에서 person 객체는 name과 age라는 프로퍼티를 가지며, greet이라는 메서드도 포함하고 있습니다.
greet 메서드가 호출되면, 객체의 name 프로퍼티를 사용하여 인사말을 출력합니다.
2. Array
📣 자바스크립트에서 배열은 순서가 있는 값의 리스트를 저장하는 데 사용됩니다.
배열의 각 요소는 인덱스로 접근할 수 있으며, 배열은 동적으로 크기가 조정됩니다.
예시
1
2
3
4
let fruits = ["Apple", "Banana", "Cherry"];
console.log(fruits[1]); // "Banana" 출력
fruits.push("Durian");
console.log(fruits); // ["Apple", "Banana", "Cherry", "Durian"] 출력
- fruits 배열에는 여러 과일 이름이 문자열로 저장되어 있습니다.
fruits[1]은 배열의 두 번째 요소에 접근합니다.
push 메서드를 사용하여 배열에 새로운 요소를 추가할 수 있습니다.
3. Function
📣 함수는 자바스크립트에서 중요한 구성 요소이며, 코드를 블록 단위로 구성하고 재사용할 수 있도록 합니다.
함수는 호출할 수 있는 객체입니다.
예시
1
2
3
4
5
6
function multiply(x, y) {
return x * y;
}
let result = multiply(5, 3);
console.log(result); // 15 출력
- multiply 함수는 두 숫자를 인자로 받아 그 곱을 반환합니다.
함수를 정의하고, 필요할 때 해당 함수를 호출하여 결과를 얻을 수 있습니다.
4. Date
📣 Date 객체는 날짜와 시간을 다루기 위해 사용됩니다.
날짜와 관련된 다양한 메서드를 제공하여 날짜 계산 및 포맷팅을 할 수 있습니다.
예시
1
2
let now = new Date();
console.log(now); // 현재 날짜 및 시간 출력
- new Date() 생성자를 사용하여 현재 날짜와 시간을 나타내는 Date 객체를 생성합니다.
now 변수를 통해 접근하고 관련 메서드를 사용할 수 있습니다.
5. RegExp
📣 정규 표현식은 문자열에서 패턴을 검색하고 치환하는 데 사용됩니다.
복잡한 문자열 처리 작업에 유용하며, 검색, 검증, 추출 작업을 수행할 때 사용됩니다.
예시
1
2
3
let pattern = /ab+c/;
let result = pattern.test("abc");
console.log(result); // true 출력
- /ab+c/ 패턴은 ‘a’ 뒤에 ‘b’가 하나 이상 있고, 그 뒤에 ‘c’가 오는 문자열과 일치합니다.
test 메서드는 주어진 문자열이 이 패턴에 맞는지를 검사합니다.
6. Map and Set
📣 Map: 키-값 쌍을 저장하는 컬렉션으로, 키에 대해 중복을 허용하지 않습니다. 객체와 달리, 키로 어떤 값이든 사용할 수 있습니다.
Set: 중복 없이 값들을 저장하는 컬렉션입니다.
각 요소는 유일하며, 주로 데이터의 중복을 제거하거나 요소의 존재 여부를 빠르게 검사할 때 사용됩니다.
예시
1
2
3
4
5
6
7
8
9
let map = new Map();
map.set('key1', 'value1');
console.log(map.get('key1')); // 'value1' 출력
let set = new Set();
set.add('apple');
set.add('banana');
set.add('apple');
console.log(set); // Set {'apple', 'banana'}
- Map 객체에서는 set 메서드를 사용하여 새로운 키-값 쌍을 추가하고, get 메서드를 사용하여 키에 해당하는 값을 얻습니다.
Set 객체에서는 add 메서드를 사용하여 값을 추가합니다.
중복된 ‘apple’을 추가해도 중복을 허용하지 않기 때문에 한 번만 저장됩니다.
데이터 타입의 중요성
자바스크립트에서 데이터 타입은 메모리 관리, 성능 최적화, 버그 예방 등에 중요한 역할을 합니다.
올바른 데이터 타입의 사용은 코드의 명확성을 높이고, 예상치 못한 오류를 줄이는 데 도움을 줍니다.
데이터 타입을 이해하고 올바르게 사용하는 것은 자바스크립트 프로그래밍의 기초적이면서도 핵심적인 부분입니다.
정리
| 구분 | 기본 타입 | 참조 타입 |
|---|---|---|
| 데이터 저장 | 값이 직접 저장됩니다. | 메모리 주소(참조)가 저장됩니다. |
| 메모리 관리 | 스택 메모리에 저장되며, 관리가 비교적 간단합니다. | 힙 메모리에 저장되며, 관리가 더 복잡합니다. |
| 값 전달 방식 | 값이 복사되어 전달됩니다 (값에 의한 전달). | 메모리 주소가 복사되어 전달됩니다 (참조에 의한 전달). |
| 변경 가능성 | 불변성(Immutable): 생성된 후 변경할 수 없습니다. | 가변성(Mutable): 생성된 후 내부 상태를 변경할 수 있습니다. |
| 예시 | let a = 10; let b = a; b = 20; console.log(a); // 10 출력 | let obj1 = { value: 10 }; let obj2 = obj1; obj2.value = 20; console.log(obj1.value); // 20 출력 |
| 공통점 | 데이터를 저장하고, typeof 연산자로 타입을 확인할 수 있습니다. | 데이터를 저장하고, typeof 연산자로 타입을 확인할 수 있습니다. |
이렇게 자바스크립트에 기본타입과 참조타입에 대해 알아보았는데요!
다음에는 데이터 형 변환과, 불변성을 유지하기 위한 방법을 알아보도록 하겠습니다!👋
