데이터 타입

허선준·2024년 8월 16일

본캠프

목록 보기
8/25

JavaScript에서 데이터 타입은 값을 나타내는 중요한 개념입니다. 데이터 타입을 잘 이해하면 코드를 더 정확하게 작성하고 오류를 피할 수 있습니다. JavaScript의 데이터 타입은 크게 기본형(Primitive Type)참조형(Reference Type)으로 구분됩니다.

1. 기본형 타입

기본형 타입은 하나의 값만 가지며, 불변(immutable)한 특성을 갖습니다. JavaScript에서 제공하는 기본형 타입은 다음과 같습니다.

(1) number

  • 숫자를 나타냅니다. JavaScript의 'number' 타입은 정수와 소수점을 모두 포함합니다.
let price = 19.99;

(2) string

  • 텍스트 데이터를 나타냅니다. 문자열은 작은따옴표('), 큰따옴표("), 또는 백틱으로 감쌀 수 있습니다.
let name = "John";
let greeting = 'Hello';
let template = `This is a string template`;

(3) boolean

  • 설명: 논리적 참(true)과 거짓(false)을 나타냅니다.
let isOpen = true;
let isClosed = false;

(4) undefined

  • 값이 할당되지 않은 변수를 나타냅니다. 변수 선언 시 초기 값을 할당하지 않으면 기본적으로 undefined가 됩니다.
let myVar;
console.log(myVar); // 출력: undefined

(5) null

  • 의도적으로 "값이 없음"을 나타내기 위해 사용되는 값입니다. null은 undefined와 다르게 의도적으로 비어 있음을 의미합니다.
let emptyValue = null;

(6) symbol

  • 고유하고 변경 불가능한 값입니다. 주로 객체의 속성 키로 사용됩니다.
let sym = Symbol('description');

2.참조형 타입

참조형 타입은 객체, 배열, 함수 등과 같이 복잡한 데이터 구조를 나타냅니다. 참조형 타입은 메모리 주소를 통해 참조되며, 복사할 때는 값이 아닌 참조형이 복사됩니다.

(1) object

  • key-value 쌍의 집합입니다. 객체는 복잡한 데이터 구조를 표현할 수 있습니다.
let person = {
    name: "John",
    age: 30,
    isStudent: false
};

(2) array

  • 순서가 있는 데이터의 리스트를 나타냅니다. 배열도 객체의 일종입니다.
let colors = ["red", "green", "blue"];

(3) function

  • 재사용 가능한 코드 블록을 나타냅니다. 함수도 객체의 일종으로 취급됩니다.
function greet(name) {
    return `Hello, ${name}!`;
}

3. 동적 타이핑

동적 타이핑은 변수를 선언할 때 특정 데이터 타입을 미리 지정하지 않는 특징을 말합니다. JavaScript에서는 변수에 할당된 값에 따라 자동으로 변수의 타입이 결정됩니다. 즉, 동일한 변수에 다양한 타입의 값을 할당할 수 있습니다.

let myVar = "Hello, World!"; // myVar는 지금 string 타입
console.log(typeof myVar); // 출력: string

myVar = 42; // 이제 myVar는 number 타입으로 변경
console.log(typeof myVar); // 출력: number

myVar = true; // 이제 myVar는 boolean 타입으로 변경
console.log(typeof myVar); // 출력: boolean

동적 타이핑의 장점

  • 유연성: 같은 변수를 여러 타입으로 재사용할 수 있습니다.

  • 간결한 코드: 타입을 미리 정의할 필요가 없어 코드가 간결해집니다.

동적 타이핑의 단점

  • 타입 안정성 부족: 코드 작성시 타입 오류를 미리 잡아내기 어렵습니다. 런타임 오류가 발생할 가능성이 높아집니다.

  • 가독성 문제: 코드가 복잡해질수록 변수의 타입을 추적하기 어려워질 수 있습니다.

4. 타입 변환

타입 변환은 한 데이터 타입의 값을 다른 데이터 타입으로 변경하는 과정입니다. JavaScript에서는 암시적 타입 변환명시적 타입 변환의 두 가지 방식으로 타입 변환이 이루어집니다.

(1) 암시적 타입 변환 (Implicit Type Conversion)

JavaScript는 필요에 따라 자동으로 데이터 타입을 변환합니다. 이 과정을 타입 강제 변환(Type Coercion) 이라고도 합니다.

let result = "5" + 2; // 문자열과 숫자를 더할 때
console.log(result); // 출력: "52" (2가 문자열로 변환된 후 결합됨)

let isTrue = "5" == 5; // 느슨한 동등 비교
console.log(isTrue); // 출력: true ("5"가 숫자 5로 변환된 후 비교됨)
  • 덧셈 연산(+)에서는 문자열이 우선순위를 가지며, 숫자가 문자열로 변환되어 결합됩니다.

  • 느슨한 동등 비교(==)에서는 두 피연산자가 같은 타입이 되도록 자동으로 변환되어 비교됩니다.

(2) 명시적 타입 변환 (Explicit Type Conversion)

개발자가 의도적으로 데이터 타입을 변환하는 것을 의미합니다. 이 경우, number(), string(), boolean() 등의 함수를 사용하거나 간단한 연산자를 이용할 수 있습니다.

let strNum = "123";
let num = Number(strNum); // 문자열을 숫자로 변환
console.log(num); // 출력: 123
console.log(typeof num); // 출력: number

let boolValue = Boolean(0); // 0을 불리언으로 변환
console.log(boolValue); // 출력: false

let numToString = String(42); // 숫자를 문자열로 변환
console.log(numToString); // 출력: "42"
  • 숫자로 변환할 때, Number()는 문자열이나 불리언 값을 숫자로 변환합니다. "123"은 123이 되고, "abc" 같은 변환 불가능한 문자열은 NaN이 됩니다.

  • 불리언으로 변환할 때, Boolean()은 값이 0, null, undefined, NaN, ""(빈 문자열)일 경우 false로, 그 외의 값은 true로 변환됩니다

  • 문자열로 변환할 때, String()은 숫자나 불리언을 문자열로 변환합니다. true는 "true", 42는 "42"가 됩니다.

동적 타이핑과 타입 변환의 예

let input = "42";

// 명시적 타입 변환
let numberInput = Number(input); // "42" -> 42
console.log(numberInput + 10); // 출력: 52

// 암시적 타입 변환
let stringResult = input + 10; // "42" + 10 -> "4210" (10이 문자열로 변환됨)
console.log(stringResult); // 출력: "4210"

// 동적 타이핑
input = true;
let booleanResult = input + 10; // true -> 1 (불리언이 숫자로 변환)
console.log(booleanResult); // 출력: 11

결론

JavaScript의 동적 타이핑은 코드 작성 시 편리하지만, 암시적 타입 변환으로 인해 예상치 못한 결과를 초래할 수 있습니다. 따라서 변환이 필요한 경우 명시적으로 타입 변환을 사용하는 것이 좋습니다.

profile
코딩 초보

0개의 댓글