본문 바로가기

언어/Javascript

[ 자바스크립트 / JavaScript ] 데이터 타입 알아보기

반응형

JavaScript는 동적 타입(dynamically typed) 언어로, 변수의 타입이 고정되지 않고 런타임에 결정됩니다. JavaScript에서는 다양한 데이터 타입을 표현할 수 있으며, 이를 크게 기본 타입(Primitive Types)과 객체 타입(Object Types)으로 나눌 수 있습니다.

1. JavaScript의 기본 데이터 타입 (Primitive Types)

  1. 숫자 (Number)
    • JavaScript에서는 정수와 부동 소수점 숫자를 모두 number 타입으로 취급합니다.
    let integer = 42;       // 정수
    let float = 3.14;       // 부동 소수점 숫자
    let negative = -5;      // 음수
    let exponent = 2e3;     // 지수 표기법, 2 x 10^3 = 2000
    • JavaScript의 숫자 타입은 64비트 부동 소수점 숫자를 따릅니다. Infinity, -Infinity, NaN (Not-a-Number) 등의 특별한 값도 가질 수 있습니다.
    let infinity = Infinity;
    let negativeInfinity = -Infinity;
    let notANumber = NaN;
  2. 문자열 (String)
    • 문자열은 텍스트 데이터를 나타내며, 큰따옴표("), 작은따옴표('), 또는 백틱(```)으로 둘러쌀 수 있습니다. 백틱을 사용하면 템플릿 리터럴을 사용할 수 있습니다.
    let singleQuote = 'Hello, World!';
    let doubleQuote = "Hello, World!";
    let templateLiteral = `Hello, ${name}!`;  // 템플릿 리터럴
    • 문자열은 불변(immutable)이며, 문자열 연결, 슬라이싱, 대소문자 변환 등의 다양한 메서드를 제공합니다.
    let greeting = "Hello";
    let name = "Alice";
    let combined = greeting + ", " + name + "!";  // 문자열 연결
  3. 불리언 (Boolean)
    • 불리언 타입은 true 또는 false 값을 가질 수 있습니다.
    let isJavaScriptFun = true;
    let isThisCorrect = false;
    • 논리 연산 및 조건문에서 사용됩니다.
    if (isJavaScriptFun) {
        console.log("JavaScript is fun!");
    }
  4. null
    • null은 명시적으로 값이 없음을 나타내는 값입니다. 의도적으로 변수에 "비어있음"을 할당할 때 사용합니다.
    let emptyValue = null;
  5. undefined
    • undefined는 변수에 값이 할당되지 않았음을 나타냅니다. 변수 선언 후 초기화되지 않은 경우 기본적으로 undefined가 할당됩니다.
    let notInitialized;
    console.log(notInitialized);  // 출력: undefined
  6. 심볼 (Symbol)
    • Symbol은 고유하고 변경 불가능한 값을 생성하는 데 사용됩니다. 주로 객체 속성의 고유한 식별자를 만들 때 사용됩니다.
    let uniqueId = Symbol("id");
    • Symbol은 객체의 속성 키로 사용될 때 충돌을 방지하기 위해 사용됩니다.

2. JavaScript의 객체 타입 (Object Types)

객체 타입은 JavaScript에서 복잡한 데이터 구조를 나타내기 위해 사용됩니다. 기본적으로 객체는 키-값 쌍의 집합입니다. 객체는 동적으로 속성을 추가, 제거, 수정할 수 있습니다.

  1. 객체 (Object)
    • 객체는 키-값 쌍의 집합입니다. 객체 리터럴 {}을 사용하여 정의할 수 있습니다.
    let person = {
        name: "Alice",
        age: 30,
        isStudent: true
    };
    • 객체의 속성은 점(.) 또는 대괄호([]) 표기법을 사용하여 접근할 수 있습니다.
    console.log(person.name);       // 출력: Alice
    console.log(person['age']);     // 출력: 30
  2. 배열 (Array)
    • 배열은 숫자 인덱스를 사용하여 요소에 접근할 수 있는 리스트입니다. 배열 리터럴 []을 사용하여 정의할 수 있습니다.
    let numbers = [1, 2, 3, 4, 5];
    let mixedArray = [1, "two", true, null];
    • 배열은 객체의 한 형태로, 다양한 메서드를 사용하여 요소를 추가, 제거, 변형할 수 있습니다.
    numbers.push(6);     // 배열 끝에 요소 추가
    let first = numbers[0]; // 첫 번째 요소에 접근
  3. 함수 (Function)
    • 함수는 JavaScript에서 일급 객체로 취급됩니다. 함수는 다른 변수와 마찬가지로 변수에 할당될 수 있으며, 다른 함수의 인자로 전달되거나 반환될 수 있습니다.
    function greet(name) {
        return `Hello, ${name}!`;
    }
    
    let sayHello = greet;
    console.log(sayHello("Alice"));  // 출력: Hello, Alice!
  4. 날짜 (Date)
    • Date 객체는 날짜와 시간을 처리하기 위한 객체입니다. new Date() 생성자를 사용하여 날짜 객체를 만들 수 있습니다.
    let now = new Date();
    console.log(now);  // 현재 날짜와 시간 출력
  5. 정규 표현식 (RegExp)
    • RegExp 객체는 문자열에 대한 정규 표현식 패턴을 정의하고, 검색, 일치, 교체 등의 작업을 수행하는 데 사용됩니다.
    let pattern = /hello/i;
    let testString = "Hello, World!";
    console.log(pattern.test(testString));  // 출력: true
  6. 맵과 셋 (Map and Set)
    • Map은 키-값 쌍의 집합으로, 키는 어떤 타입도 될 수 있습니다.
    • Set은 유일한 값의 집합으로, 중복된 값이 없습니다.
    let map = new Map();
    map.set("key1", "value1");
    map.set("key2", "value2");
    console.log(map.get("key1"));  // 출력: value1
    
    let set = new Set();
    set.add(1);
    set.add(2);
    set.add(2);  // 중복 값 추가 시 무시됨
    console.log(set.has(2));  // 출력: true

3. JavaScript의 특별한 타입

  1. BigInt
    • BigInt는 임의 정밀도의 정수를 나타내기 위한 데이터 타입으로, 매우 큰 숫자를 다룰 때 사용됩니다. n을 숫자 끝에 붙여서 정의할 수 있습니다.
    let bigNumber = 1234567890123456789012345678901234567890n;
  2. Symbol
    • Symbol은 고유하고 변경 불가능한 원시 값으로, 객체 속성의 고유한 식별자를 나타내는 데 사용됩니다.
    let uniqueSymbol = Symbol('unique');

4. 요약

  • JavaScript는 다양한 데이터 타입을 지원하며, 각 타입은 특정한 목적에 맞게 설계되었습니다. 변수에 저장된 값의 타입은 런타임에 결정되며, 변수는 서로 다른 타입의 값을 가질 수 있습니다. 이러한 유연성 덕분에 JavaScript는 동적이고 다재다능한 언어로 사용될 수 있습니다.
반응형