모던 자바스크립트 Deep Dive - 6. 데이터 타입

둡둡·2023년 12월 31일

6. 데이터 타입

  • 데이터 타입(data type): 값의 종류
    • 원시 타입(primitive type): number, string, boolean, undefined, null, symbol
    • 객체 타입(object/reference type): 객체, 함수, 배열 등

6.1. 숫자 타입

  • 배정밀도 64비트 부동소수점 형식: 모든 값을 실수로 처리
  • 3가지 특수 값: Infinity(양의 무한대), -Infinity(음의 무한대), NaN(산술 불가)

6.2. 문자열 타입

  • 0개 이상의 16비트 유니코드 문자(UTF-16)의 집합
  • '', "", `` 사용
  • 자바스크립트의 문자열은 원시 타입으로 변경 불가능한 값

6.3. 템플릿 리터럴

  • 멀티라인(개행) 문자열, 표현식 삽입, 태그드 템플릿 등 편리한 문자열 처리 기능 제공
  • 백틱(``) 사용

6.4. 불리언 타입

  • 논리적 참, 거짓을 나타내는 true/false

6.5. undefined 타입

  • 변수에 의해 확보된 메모리 공간에 쓰레기 값(garbage value)을 방지하기 위해 undefined로 초기화
  • undefined는 변수를 초기화할 때 사용하는 값
  • 변수에 값이 없다는 것을 명시하기 위해서는 null 권장

6.6. null 타입

  • 자바스크립트는 대소문자를 구별하므로 Null, NULL 등과는 다름
  • 변수에 값이 없음을 의도적으로 명시하기 위해 사용함(의도적 부재)
  • 이전에 할당되어 있던 값을 명시적으로 제거

6.7. 심벌 타입

  • ES6에서 추가된 타입, 변경 불가능한 원시 타입
  • 다른 값과 중복되지 않는 유일무이한 값
    • 충돌 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용

6.8. 객체 타입

  • 자바스크립트는 객체 기반의 언어, 거의 모두 객체로 이뤄짐

6.9. 데이터 타입의 필요성

6.9.1. 데이터 타입에 의한 메모리 공간의 확보와 참조

  • 메모리에 값을 저장하기 위해 확보해야 할 메모리 공간의 크기를 결정해야 함
    • 데이터 타입에 따라 확보해야 할 메모리 공간의 크기가 달라짐
  • 값을 참조할 때는 한 번에 읽어 들일 메모리 공간의 크기를 결정해야 함

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

  • 메모리에 2진수로 저장된 값은 데이터 타입에 따라 다르게 해석됨
    • ex) 0100 0001 : 숫자는 65, 문자는 'A'

6.10. 동적 타이핑

6.10.1. 동적 타입 언어와 정적 타입 언어

  • 정적 타입 언어(static/strong type): 변수의 데이터 타입을 먼저 선언하고 변경할 수 없음 (명시적 타입 선언)
    • 컴파일 시점에 타입 체크를 수행함(C, java)
    • ex) int num -> 4바이트 정수 타입의 값만 선언 가능
  • 동적 타입 언어(dynamic type): 할당에 의해 타입 결정 (타입 추론)
    • var, let, const 키워드 사용하여 변수 선언
    • 값을 할당하는 시점에 동적으로 타입이 결정되고, 재할당 가능 (동적 타이핑)

6.10.2. 동적 타입 언어와 변수

  • 동적 타입 언어의 변수는 값을 확인하기 전까지 타입을 확신할 수 없음
  • 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되기도 함
    • 유연성은 높지만 신뢰성이 떨어짐
  • 변수 사용 시 고려할 사항
    • 변수는 필요한 만큼 최소한으로 유지
    • 변수의 유효 범위(스코프)를 최대한 좁게
    • 전역 변수는 최대한 지양
    • 상수(const) 사용으로 값의 변경 지양
    • 변수의 목적이나 의미에 맞는 적절한 네이밍
  • 가독성 좋은 코드가 좋은 코드

[출처] 모던 자바스크립트, Deep Dive

profile
괴발개발라이프

0개의 댓글