본문 바로가기
카테고리 없음

[javascript] ES6 Data Type - 간단 기록

by simongs 2020. 12. 19.

본 글은 "모던자바스크립트 Deep Dive"를 보던 중에 정리용으로 기록한 글입니다.

▣ 개요

ES6기준으로 자바스크립트에는 7가지의 데이터 타입이 존재한다.
(https://developer.mozilla.org/ko/docs/Web/JavaScript/Data_structures)

가끔씩 undefined 와 null의 차이가 헷갈릴 때가 있어서 기록해 두도록 한다.

▣ 7가지 데이터 타입

기본형 타입 (Primitive Value)

  • Boolean
  • Number
  • String
  • Undefined
  • Null
  • Symbol

참조형 타입 (Reference Value)

  • Object Type

▣ 타입별 특징

기본형 타입 > Number Type

  • ECMAScript 표준에 따르면, 숫자의 자료형은 배정밀도 64비트 형식 IEEE 754 값 (-(253 -1) 와 253 -1 사이의 숫자값) 단 하나만 존재한다.
  • 변수하나에 8 바이트를 차지한다. 타 언어의 4 Byte 정수형 등과 비교하면 동일한 정수형 선언에도 차지하는 메모리 크기가 차이가 남을 알 수 있다.

기본형 타입 > String Type

  • 자바스크립트의 문자열은 변경 불가능 (immutable) 하다.
  • 유니코드(16 비트)로 구성되어 있다.

기본형 타입 > Undefined Type

  • 해당 타입의 값은 undefined가 유일하다.
  • 변수 선언을 위해 확보한 메모리 공간이 할당이 이루어질 때까지 undefined 값을 지닌다.
var test;
console.log(test); // undifined 출력

기본형 타입 > Null Type

  • 해당 타입의 값은 null이 유일하다.
  • 프로그래밍 언어에서 null은 변수에 값이 없다 라는 것을 표현하기 위해 명시적으로 사용한다.
var element = document.querySelector('#없는ID값'); // 존재하지 않는 element 참조
console.log(element); // null

기본형 타입 > Symbol Type

  • ES6에서 추가된 타입
  • 변경 불가능한 원시타입
  • 리터럴로 생성되는 다른 타입과는 다르게 Symbol 함수를 통해서 생성된다.
var key = Symbol('key');
console.log(typeof key); // symbol

참조형 타입 > Object

var test = {
    title: "BOOK", => 각 1개의 property
    author: "simons" => author 는 property key, "simons" 는 property value
}
  • 자바스크립트는 객체 기반의 프로그래밍 언어이다.
  • 객체는 Property와 Method로 구성된 집합이다.
  • Property Value로는 자바스크립트의 모든 값이 될 수 있고, 함수 역시 property value가 될 수 있다.
    • 함수가 Property Value가 되면 이를 method 라고 부른다.
  • 객체를 생성하는 5가지 방법
    • 객체리터럴
    • Object 생성자 함수
    • 생성자 함수
    • Object.create 함수
    • 클래스 (ES6)

▣ 동적타입 언어

자바나 C 같은 언어는 정적타입 언어이고 값을 선언하는 시점에 해당 값의 데이터 유형을 정의한다.
주로 컴파일 언어에서 타입체크를 위해 활용되고 자바스크립트에서 변수 선언 후 어떤 타입으로 쓰일지 모르는 불편함에 타입스크립트 언어가 인기를 끌고 있다. (int num;)
이러한 정적 타입언어로는 C, C++, 자바, 코틀린, 고, 하스켈 등이 있다.

반면 자바스크립트의 변수는 값이 할당될 때마다 데이터 타입이 변경된다. (typeof 연산자)
이러한 동적타입언어는 파이썬, PHP, 루비 등이 있다.
자유로운 할당으로 데이터타입을 고려하지 않아도 되는 편리함이 있지만 신뢰성이 떨어진다는 단점이 있다.
그래서 안정성을 체크하기 위한 if (typeof 변수 == 'string') 등의 타입체크가 들어가는 경우도 있다.

var test;
console.log(typeof test); // undefined

test = 3;
console.log(typeof test); // number

test = true;
console.log(typeof test); // boolean

댓글