본문 바로가기

js

[javascript] 데이터 타입(data type)

 

javascript의 데이터에는 두 가지 타입이 존재한다.

 

 

1. 기본 타입(원시 타입 Primitive data type)

 

  • 객체가 아니면서 method를 가지지 않음
  • 데이터를 담고 있음
  • 변경이 불가능한 데이터 타입(immutable data types)
  • string, number, bigint, boolean, undefined, symbol

 

 

2. 참조 타입(객체 타입 Reference data type)

 

  • 기본 타입이 아닌 모든 것은 객체(object)
  • 기본 타입의 집합
  • 동적으로 크기가 변하는 데이터를 보관하기 위해 변수가 아닌 다른 곳에 데이터를 저장하고 변수에는 그 주소만 할당됨
  • 변경이 가능한 데이터 타입(mutable data types)
  • 객체(object), 배열(array), 함수(fuction)

 

 

 

 

먼저 기본 타입에 대해 알아보자.

 

 

 

 

① String(문자열)

 

string은 문자열을 나타내는 타입이다.

 

세 가지로 표현이 가능하다.

let a = 'hi';

let b = "hi";

let c = `hi! my name is ${name}.`;

마지막 방식인 backtick을 사용하면 굳이 변수명을 문자열과 구분하여 + 로 이어주지 않더라도 출력하고자 하는 그대로 출력이 가능하다.

 

 

② Number(숫자)

 

다양한 숫자 타입이 존재하는 C언어와는 다르게 javascirpt에서는 하나의 숫자 타입만 존재한다.

모든 숫자를 64비트 부동 소수점 형태로 저장하여 정수나 실수의 구분 없이 바로 변수에 값을 대입할 수 있다.

const a = 1 / 0;
const b = -1 / 0;
const c = 'hi' / 7;

console.log(a);
// infinity
console.log(b);
// -infinity
console.log(c);
// NaN

숫자를 0으로 나누게 되면 양,음에 따라 무한대를 뜻하는 infinity와 -infinity로 출력되고

숫자가 아닌 값을 숫자로 나누게 되면 숫자가 아니라는 뜻의 NaN(Not a Number)이 출력된다.

 

parseInt('3.14'): 문자열을 정수로 변경

// 3

parseFloat(3.14): 문자열을 소수로 변경

// 3.14

 

소수 계산 시에는 10을 곱해서 정수로 만들어서 계산한 후 결과값을 10으로 다시 나눈다.

 

 

③ Boolean(불리언)

 

boolean은 true와 false를 나타내는 타입이다.

조건을 나타낼 때 아주 많이 쓰인다.

false: 빈문자열, 0, -0, null, undefined, NaN

true: -1, 'string'

let a = true;
// true

let b = false;
// false

 

 

④ Undefined, Null

 

undefined는 값이 할당되지 않아 데이터 타입을 알 수 없는 경우

null은 빈 값이 지정된 경우

 

null 값의 typeof 결과는 object가 출력되므로 null 값 체크가 필요할 땐 일치 연산자(===)를 사용해야 한다.

let a;

console.log(a);
// undefined

let b = null;

console.log(b);
// null

 

 

⑤ Symbol(심벌)

 

ES6부터 새로 생긴 데이터 타입이며, 고유한 식별자가 필요할 때 사용한다.

 

같은 값을 이용하여 변수를 생성해도 다른 값의 symbol이 생성된다.

const a = symbol('hi');
const b = symbol('hi');

console.log(a === b);
// false

 

만약 같은 값을 가지는 symbol을 만들고 싶으면 아래처럼 하면 된다.

const a = symbol.for('hi');
const b = symbol.for('hi');

console.log(a === b);
// true

 

출력 시에는. description을 이용하여 문자열로 변환한 뒤 출력해주어야 한다.

console.log(`type is ${a.description}`);

 

 

 

 

기본 타입은 여기까지.

이제 참조 타입에 대해 알아보자.

 

 

 

 

① Object(객체)

 

object 데이터 타입은 기본 타입을 제외한 모든 것이 해당되고, 한 두가지 이상의 값이 묶여있는 것을 의미한다.

여러 개의 프로퍼티를 저장할 수 있고, 메소드를 만들어 사용할 수 있다.

const person = {
  name: ['Bob', 'Smith'],
  age: 32,
  gender: 'male',
  interests: ['music', 'skiing'],
  // 프로퍼티(속성)
  bio: function() {
    alert(this.name[0] + ' ' + this.name[1] + ' is ' + this.age + ' years old. He likes ' + this.interests[0] + ' and ' + this.interests[1] + '.');
  },
  greeting: function() {
    alert('Hi! I\'m ' + this.name[0] + '.');
  }
  // 메소드(함수)
};