JavaScript의 데이터 νƒ€μž…λ“€μ˜ νŠΉμ§•κ³Ό ν™œμš©λ²•μ„ μ•Œμ•„λ³΄μž.

Primitive Types (μ›μ‹œ νƒ€μž…)

String

λ¬Έμžμ—΄μ„ λ‚˜νƒ€λ‚΄λŠ” νƒ€μž…μœΌλ‘œ, ν…μŠ€νŠΈ 데이터λ₯Ό 닀룬닀.

// λ¬Έμžμ—΄ 생성
const str = "Hello";
const str2 = 'World';
const str3 = `Hello ${str2}`; // ν…œν”Œλ¦Ώ λ¦¬ν„°λŸ΄
 
// μ£Όμš” λ©”μ„œλ“œ
str.length; // 길이
str.toUpperCase(); // λŒ€λ¬Έμž
str.toLowerCase(); // μ†Œλ¬Έμž
str.substring(0, 3); // λΆ€λΆ„ λ¬Έμžμ—΄
str.split(' '); // λ¬Έμžμ—΄ λΆ„ν• 
str.trim(); // 곡백 제거
str.includes('el'); // 포함 μ—¬λΆ€ 확인

Number

숫자λ₯Ό λ‚˜νƒ€λ‚΄λŠ” νƒ€μž…μœΌλ‘œ, μ •μˆ˜μ™€ μ‹€μˆ˜λ₯Ό λͺ¨λ‘ ν¬ν•¨ν•œλ‹€.

// 숫자 생성
const num = 42;
const float = 42.123;
 
// μ£Όμš” λ©”μ„œλ“œμ™€ ν”„λ‘œνΌν‹°
Number.isInteger(num); // μ •μˆ˜ μ—¬λΆ€
Number.isFinite(num); // μœ ν•œμˆ˜ μ—¬λΆ€
num.toFixed(2); // μ†Œμˆ˜μ  자릿수 μ§€μ •
Number.MAX_SAFE_INTEGER; // μ΅œλŒ€ μ•ˆμ „ μ •μˆ˜
Number.MIN_SAFE_INTEGER; // μ΅œμ†Œ μ•ˆμ „ μ •μˆ˜

Boolean

true λ˜λŠ” false 값을 κ°€μ§€λŠ” 논리 νƒ€μž…μ΄λ‹€.

const bool = true;
const bool2 = false;
 
// ν”ν•œ λΆˆλ¦¬μ–Έ λ³€ν™˜
!!0; // false
!!1; // true
!!{}; // true
!!''; // false

Null & Undefined

값이 μ—†μŒμ„ λ‚˜νƒ€λ‚΄λŠ” νŠΉλ³„ν•œ νƒ€μž…μ΄λ‹€.

let val = null; // λͺ…μ‹œμ μœΌλ‘œ 값이 μ—†μŒ
let val2; // undefined, 값이 ν• λ‹Ήλ˜μ§€ μ•ŠμŒ
 
// 확인 방법
val === null; // true
typeof val2 === 'undefined'; // true

Reference Types (μ°Έμ‘° νƒ€μž…)

Array

μˆœμ„œκ°€ μžˆλŠ” 데이터 μ»¬λ ‰μ…˜μ„ λ‚˜νƒ€λ‚Έλ‹€.

// λ°°μ—΄ 생성
const arr = [1, 2, 3];
const arr2 = new Array(3); // 길이가 3인 빈 λ°°μ—΄
 
// μ£Όμš” λ©”μ„œλ“œ
arr.push(4); // 끝에 μΆ”κ°€
arr.pop(); // λμ—μ„œ 제거
arr.shift(); // μ•žμ—μ„œ 제거
arr.unshift(0); // μ•žμ— μΆ”κ°€
arr.includes(2); // 포함 μ—¬λΆ€
arr.indexOf(2); // 인덱슀 찾기
 
// λ°°μ—΄ λ³€ν˜•
arr.map(x => x * 2); // 각 μš”μ†Œ λ³€ν™˜
arr.filter(x => x > 1); // 쑰건에 λ§žλŠ” μš”μ†Œλ§Œ
arr.reduce((sum, x) => sum + x, 0); // λˆ„μ  계산
arr.slice(1, 3); // λΆ€λΆ„ λ°°μ—΄
arr.splice(1, 1); // μš”μ†Œ μ‚­μ œ/μΆ”κ°€

Set

쀑볡을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ” κ°’μ˜ μ»¬λ ‰μ…˜μ΄λ‹€.

// Set 생성과 μ‘°μž‘
const mySet = new Set([1, 2, 3]);
mySet.add(4);
mySet.delete(1);
mySet.has(2);
mySet.size;
 
// λ°°μ—΄ λ³€ν™˜μ΄ ν•„μš”ν•œ μž‘μ—…
[...mySet].map(x => x * 3);
Array.from(mySet);

Map

ν‚€-κ°’ 쌍의 μ»¬λ ‰μ…˜μœΌλ‘œ, Object와 달리 ν‚€κ°€ μ–΄λ–€ νƒ€μž…μ΄λ“  될 수 μžˆλ‹€.

// Map 생성과 μ‘°μž‘
const myMap = new Map();
myMap.set('key', 'value');
myMap.set(42, 'number key');
myMap.get('key');
myMap.has('key');
myMap.delete('key');
myMap.size;
 
// 순회
myMap.forEach((value, key) => console.log(key, value));
for (const [key, value] of myMap) {
    console.log(key, value);
}

Object

ν‚€-κ°’ μŒμ„ μ €μž₯ν•˜λŠ” 기본적인 μžλ£Œκ΅¬μ‘°λ‹€.

// 객체 생성과 μ‘°μž‘
const obj = {
    name: 'John',
    age: 30
};
 
// 속성 μ ‘κ·Ό
obj.name;
obj['age'];
 
// 쑴재 μ—¬λΆ€ 확인
'name' in obj;
obj.hasOwnProperty('age');
 
// 객체 μ‘°μž‘
Object.keys(obj); // ν‚€ λ°°μ—΄
Object.values(obj); // κ°’ λ°°μ—΄
Object.entries(obj); // ν‚€-κ°’ 쌍 λ°°μ—΄
Object.freeze(obj); // λΆˆλ³€ 객체둜 λ§Œλ“€κΈ°

νƒ€μž… λ³€ν™˜

λͺ…μ‹œμ  λ³€ν™˜

// λ¬Έμžμ—΄λ‘œ λ³€ν™˜
String(123); // "123"
(123).toString(); // "123"
 
// 숫자둜 λ³€ν™˜
Number("123"); // 123
parseInt("123", 10); // 123
parseFloat("123.45"); // 123.45
 
// λΆˆλ¦¬μ–ΈμœΌλ‘œ λ³€ν™˜
Boolean(""); // false
Boolean(1); // true

μ•”μ‹œμ  λ³€ν™˜

"123" + 456; // "123456"
"123" - 0; // 123
!!0; // false
if ("") { /* μ‹€ν–‰λ˜μ§€ μ•ŠμŒ */ }

νƒ€μž…λ³„ νŠΉμ§• 비ꡐ

νƒ€μž…νŠΉμ§•μ£Όμš” μš©λ„
StringλΆˆλ³€, 인덱슀 μ ‘κ·Ό κ°€λŠ₯ν…μŠ€νŠΈ 처리
Number64λΉ„νŠΈ λΆ€λ™μ†Œμˆ˜μ μˆ˜μΉ˜ 계산
Booleantrue/false쑰건문
Arrayμˆœμ„œ μžˆλŠ” μ»¬λ ‰μ…˜λ°μ΄ν„° 리슀트
Set쀑볡 μ—†λŠ” μ»¬λ ‰μ…˜κ³ μœ κ°’ 관리
Mapν‚€-κ°’ 쌍(ν‚€ νƒ€μž… 자유)λ³΅μž‘ν•œ λ§€ν•‘
Objectν‚€-κ°’ 쌍(λ¬Έμžμ—΄ ν‚€)κ΅¬μ‘°ν™”λœ 데이터