Language | Basic/JavaScript

[JavaScript 스터디] 데이터 타입

주정용 2021. 1. 22. 00:33
728x90
  • 자바스크립트의 모든 값은 데이터 값을 가짐
  • 데이터 타입
    • 원시 타입 : number, string, boolean, undefined, null, symbol(ES6에서 추가)
    • 객체 타입 : 객체, 함수, 배열 등
  • 데이터 타입의 필요성
    • 메모리 공간의 확보, 참조 : 데이터 타입에 따라 메모리 공간의 크기가 결정
    • 값의 해석 : 메모리에서 읽어온 2진수를 어떻게 해석할 것인지 결정
  • 원시 타입 --> 변경 불가능한 값(Immutable value)
  • 객체 타입 --> 변경 가능한 값(Mutable value)

number 타입

  • 자바스크립트는 하나의 숫자 타입만 존재함
  • 배정밀도 64bit 부동소수점 형식
  • 모든 수는 실수로 처리
  • 2진수, 8진수, 16진수 등의 리터럴은 모두 10진수로 해석됨
  • 정수로 표시되는 수끼리 나누면 실수가 나올 수도 있음
  • 특별한 값 : Infinity(양의 무한대), -Infinity(음의 무한대), NaN(산술 연산 불가)

string 타입

  • 0개 이상 UTF-16의 집합으로 문자를 표현
  • '', "", ``로 표현 --> 키워드, 식별자와 같은 토큰을 구별하기 위함
  • ''로 표현하는 게 일반적임
  • 변경 불가능한 값 --> Immutable value
    • 따라서 인덱스로 문자를 참조해서 변경해도 값이 변하지 않음

템플릿 리터럴

  • ES6부터 도입한 새로운 문자열 표기법
  • 런타임에 일반 문자열로 변환되어 처리됨
  • `` 사용
  • 멀티라인 문자열 허용
  • 표현식 삽입 허용 : ${value} 형태 --> 표현식의 결과가 문자열로 변환되어 삽입됨

boolean 타입

  • true, false

undefined 타입

  • 자바스크립트 엔진이 변수를 초기화할 때 사용
  • 개발자가 변수에 할당하는 것은 권장되지 않음 --> 개발자는 null을 할당

null 타입

  • 변수에 값이 없다는 것을 의도적으로 드러냄 -> 의도적 부재
  • 함수가 유효 값을 반환할 수 없을 때 null을 반환함

symbol 타입

  • 다른 값과 중복되지 않은 유일한 값
  • 이름이 충돌할 일이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용함
  • Symbol 함수를 호출해서 생성함
  • 값은 외부에 노출되지 않으며, 다른 값과 절대 중복되지 않음

객체 타입

  • 자바스크립트를 이루는 것은 거의 다 객체임

동적 타이핑

  • 자바스크립트에서는 값 할당 시점에 변수의 타입이 결정됨

  • 할당에 의한 타입 결정 --> 타입 추론

  • 변수의 타입은 재할당을 통해서 언제든 동적으로 변할 수 있음

  • 단점(신뢰성의 문제)

    • 변화하는 변수 값 추적이 어려움
    • 값을 확인하기 전에 타입을 확신할 수 없음
  • 따라서 변수는

    • 꼭 필요한 경우에만 사용
    • 스코프는 최대한 좁게
    • 전역 변수는 사용을 억제
    • 변수보다는 상수를 사용
    • 변수 이름은 목적이나 의미를 파악할 수 있도록 지음

학습 도서

  • '모던 자바스크립트 Deep Dive', 이웅모 저, 위키북스

http://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&linkClass=3314&barcode=9791158392239