TIL

190502_TIL(데이터타입)

데이터 타입

데이터 타입에 의한 값의 해석

  • 데이터 타입(Data Type)은 값의 종류를 말한다. 자바스크립트의 모든 값은 데이터 타입을 갖는다.
  • 컴퓨터는 숫자, 텍스트, 이미지, 동영상 등의 모든 데이터를 2진수로 처리한다. 예를 들어 2진수 0100 0001를 숫자로 해석하면 65이지만 문자로 해석하면 ‘A’이다
  • 컴퓨터는 메모리 공간의 주소에서 읽어 들인 2진수를 각각의 데이터 타입으로 인식하고 해석한다.

데이터 타입이 필요한 이유

  • 값을 저장할 때 확보해야 하는 메모리 공간의 크기를 결정하기 위해
  • 값을 참조할 때 한번에 읽어 들여야 할 메모리 공간의 크기를 결정하기 위해
  • 메모리에서 읽어 들인 2진수를 어떻게 해석할 지를 결정하기 위해

값(value)

  • 더 이상 평가할 수 없는 하나의 표현식
  • 10 + 20은 표현식이다. 평가를 거쳐서 30이라는 이 된다.
  • 표현식 –> 하나의 값으로 평가될 수 있는 문(statement)
    • 표현식은 표현식의 일부가 될 수 있다.
  • 리터럴 –> 가장 최소 단위의 표현식, 값을 만드는 방식, 평가되기 이전의 상태
    • 10 + 20 = 30; 1020은 리터럴 이지만, 30은 리터럴이 아니다.
    • 리터럴은 메모리의 저장되지 않는다.
    • 리터럴은 표현식의 원소가 될 수 있다. ex) 10 + 20
  • 평가 –> 하나의 값으로 만드는 것.

데이터 타입의 분류

  • 자바스크립트(ES6)는 7개의 데이터 타입을 제공한다.
  • 7개의 데이터 타입은 원시 타입(primitive type)과 객체 타입(object/reference type)으로 분류할 수 있다.
  • 원시 타입(primitive type)
    • 숫자(number) 타입: 숫자 (정수, 실수)
    • 문자열(string) 타입: 문자열
    • 불리언(boolean) 타입: 논리적 참과 거짓
    • undefined 타입: 선언은 되었지만 값을 할당하지 않은 변수에 암묵적으로 할당되는 값
    • null 타입: 값이 없다는 것을 의도적으로 명시할 때 사용하는 값
    • Symbol 타입: ES6에서 새롭게 추가된 7번째 타입
  • 객체 타입 (object/reference type): 객체, 함수, 배열 등

숫자 타입

  • 자바스크립트는 독특하게 하나의 숫자 타입만 존재한다.
  • ECMAScript 사양에 따르면 숫자 타입의 값은 배정밀도 64비트 부동소수점 형식(double-precision 64-bit floating-point format : -(253 -1) ~ 253 -1 사이의 숫자 값)을 따른다. 즉, 모든 수를 실수로 처리하며 정수만을 표현하기 위한 특별한 데이터 타입(integer type)은 없다.
  • 따라서 정수로 표시되는 수 끼리 나누더라도 실수가 나올 수 있다.
  • 숫자 타입은 추가적으로 3가지 특별한 값들도 표현할 수 있다.
    • Infinity : 양의 무한대
    • -Infinity : 음의 무한대
    • NaN : 산술 연산 불가(not-a-number)

문자열 타입

  • 기본적으로 작은 따옴표 사용. 특수한 상황에서 백틱(ES6)을 사용한다.
  • 문자열을 따옴표로 감싸는 이유?

    • 문자열의 시작과 끝을 알리기 위해
  • 자바스크립트의 문자열은 원시 타입이며 변경 불가능한 값 (immutable value)다.

  • 템플릿 리터럴

    • (backtick) 문자 `를 사용

    • ES6 템플릿 리터럴은 일반적인 문자열과 달리 여러 줄에 걸쳐 문자열을 작성할 수 있으며 템플릿 리터럴 내의 모든 공백은 있는 그대로 적용된다.

    • 문자열 인터폴레이션은 ${ … }으로 표현식을 감싼다. 문자열 인터폴레이션 내의 표현식은 문자열로 강제 타입 변환된다.

    • 1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      const template = `템플릿 리터럴은 '작은따옴표(single quotes)'과 "큰따옴표(double quotes)"를 혼용할 수 있다.`;

      // HTML을 다룰 시 굉장히 편하다.
      const template = `<ul class="nav-items">
      <li><a href="#home">Home</a></li>
      <li><a href="#news">News</a></li>
      <li><a href="#contact">Contact</a></li>
      <li><a href="#about">About</a></li>
      </ul>`;


      // 인터폴레이션, 평가한 다음에 문자열화 한다.
      console.log(`1 + 1 = ${1 + 1}`); // 1 + 1 = 2

참고자료

Share