본문 바로가기

Web 개발/JS

JavaScript 데이터 타입

  • 기본형 (Primitive Type)
    • 숫자 (Number)
    • 문자열 (String)
    • 불리언 (Boolean)
    • null
    • undefined
  • 참조형 (Reference Type)
    • 배열(Array)
    • 객체 (Object)
키워드
Number, 정수와 실수 구분, Number.isInteger(n), 템플릿 리터널, Object.keys(v), Object.values(n)

# 기본형 (Primitive Type)

  • 값 자체를 저장하는 데이터 타입, 불변 (immutable)

# 숫자 (Number)

  • 정수와 소수(실수)를 포함한 숫자 데이터 타입 (10, 99.99, 3.14)
  • 정수(int)와 실수(dobule)을 구분하지 않고 하나의 number 숫자로 취급한다
  • 정수와 실수를 구분하지 않는 이유?
    • JavaScript는 동적 타입 언어로 숫자 타입을 자동으로 변환한다
    • 정수와 실수를 구분하지 않는 편리함이 있지만 부동소수점 연산의 오차(0.1 + 0.2 !== 0.3)와 같은 문제가 발생 가능성 있음
    • 정수 확인 방법 : Number.isInteger(n)
  • 특수 값
    • Infinity : 양의 무한대 ( 1 / 0 )
    • -Infinity : 음의 무한대 ( -1 / 0)
    • NaN (Not-a-Number) : 숫자가 아님 (잘못된 계산 결과)
let num1 = 100;
let num2 = 3.14;
let num3 = 1 / 0;
let num4 = -1 / 0;
let num5 = "string" * 100;

console.log(num1, typeof(num1), Number.isInteger(num1));    // 100 'number' true 출력
console.log(num2, typeof(num2), Number.isInteger(num2));    // 3.14 'number' false 출력
console.log(num3, typeof(num3), Number.isInteger(num3));    // Infinity 'number' false 출력
console.log(num4, typeof(num4), Number.isInteger(num4));    // - Infinity 'number' false 출력
console.log(num5, typeof(num5), Number.isInteger(num5));    // NaN 'number' false 출력

# 문자열 (String)

  • 문자들의 집합(텍스트 데이터)
  • 작은따옴표('), 큰따옴표(")으로 감싸서 표현
  • 템플릿 리터널 (Template Literal)
    • 문자열을 쉽게 다루고 조작할 수 있는 JavaScript의 기능
    • 따옴표 대신 백틱(`)으로 감싸서 표현
    • 문자열에 ${ } 내부엔 변수나 표현식을 직접 사용할 수 있음
    • 줄바꿈 표현과 띄어쓰기 표현이 가능
let str1 = "Hellow!";
let str2 = "World!";
let str3 = `Hi~ ${str2}`;
let str4 = `${3.14 * 64}`;
let str5 = `Hellow~
            World~`;                  // pre 태그처럼 줄바꿈 띄어쓰기 모두 표현된다
            
console.log(str1, typeof(str1));      //  Hellow! string 출력
console.log(str2, typeof(str2));      //  World! string 출력
console.log(str3, typeof(str3));      //  Hi~ World! string 출력
console.log(str4, typeof(str4));      //  200.96 string 출력
console.log(str5, typeof(str5));      //  Hellow~
                                      //          Wrold! string 출력

# 불리언 (Boolean)

  • true(참) 또는 false(거짓) 값을 가지는 논리 타입
let bool1 = true;
let bool2 = false;

if (bool1) console.log(bool1, typeof(bool1)); // true 'boolean' 출력
if (!bool2) console.log(bool2, typeof(bool2)); // false 'boolean' 출력

# null

  • 의도적으로 "값이 없음"을 의미하는 데이터 타입
  • 개발자가 명시적으로 변수에 값이 없음을 지정할 때 사용
let nul1 = null;

console.log(nul1, typeof(nul1));    // null 'object' 출력

# undefined

  • 값이 "아직 할당되지 않음"을 의미
  • 변수를 선언했지만 초기화하지 않으면 자동으로 할당되는 값
let undef1;
let undef2 = undefined;

console.log(undef1, typeof(undef1));    // undefined  'undefined' 출력
console.log(undef2, typeof(undef2));    // undefined  'undefined' 출력

# 참조형 (Reference Type)

  • 값이 아닌 메모리 주소를 저장하는 데이터 타입, 가변(mutable)

# 배열 (Array)

  • 여러 개의 값을 순서대로 저장하는 데이터 타입
  • 대괄호 [ ]로 정의하며, 각 값은 인덱스(0부터 시작) 를 통해 접근 가능
  • 데이터 접근 : 변수[인덱스]
let fruits = ["사과", "바나나", "포도"]

console.log(fruits[0], fruits[1], fruits[2], typeof(fruits)); // 사과 바나나 포도 object 출력

fruits.forEach(function (fruit) { // 사과
    console.log(fruit);           // 바나나
});                               // 포도 출력

# 객체 (Object)

  • 키-값(key-value) 쌍으로 이루어진 데이터 타입
  • 중괄호 { }로 정의하며, 속성(property)을 가질 수 있음 {속성명 : 속성값}
  • 데이터 접근 (속성값)
    • 변수.키
    • 변수["키"]
  • Ojbect 내장 메소드
    • Object.keys(객체) : 객체의 속성명을 배열로 반환한다
    • Object.values(객체) : 객체의 속성값을 배열로 반환한다
    • Object.entries(객체) : 객체의 속셩명과 속성값을 배열로 반환한다
let obj = {name : "사과", category : "과일", no : 192839}

console.log(obj.name, typeof(obj))                  // 사과 object 출력
console.log(obj["category"], typeof(obj.category))  // 과일 string 출력
console.log( Object.keys(obj))                      // (3) ['name', 'category', 'no'] 출력
console.log( Object.values(obj))                    // (3) ['사과', '과일', 192839] 출력
console.log( Object.entries(obj))                   
// (3) ['name', '사과'] ['category', '과일'] ['no', 192839] 출력

 

 

'Web 개발 > JS' 카테고리의 다른 글

JavaScript 함수  (0) 2025.03.18
JavaScript 반복문과 제어  (0) 2025.03.14
JavaScript 조건문  (0) 2025.03.13
JavaScript 변수 (var, let, const)  (0) 2025.03.11
JavaScript이란 무엇일까? (탄생과 배경, 역사, 특징, 장단점)  (0) 2025.03.10