본문 바로가기
Daily Morning Study

[모던 자바스크립트 DeepDive] 7일차 - 데이터타입

by 만발한매화 2025. 7. 15.
본 문서는 "모던 자바스크림트 DeepDive"를 데일리로 학습하며 기억할 부분과 추가학습한 부분을 공유한다.

 

1. 원시타입(primitive type)과 객체타입(object/reference type)

  • 객체타입 : 객체, 함수, 배열을 포함한다.
  • 원시타입 : 객체타입외의 타입이 모두 해당된다. (number, string, Boolean, undefined, null, symbol)

 

2. 숫자 타입

  • 64비트 부동소수점 형식 따른다. <-> C나 자바 : 정수, 실수 구분 (isn't, long, float, double)
    • 부동소수점(Floating Point) : 실수(소수점 있는 수)를 컴퓨터가 표현하기 위해 사용하는 이진 기반의 근사값 표현 방식
    • 부동 : 소수점 위치가 고정되어있지 않다. (정수: 자릿수 고정, 부동 소수저미 소수점 자유이동)
  • NaN : 산술 연산 불가(not-a-number) => 대소문자 구별 주의 (case-sensitive)

 

3. 문자열 타입

  • ASCII를 사용했으나 더 많은 언어 대응이 필요하여 등장
  • UTF-16 : 문자 인코딩 방식(Unicode Transformation Format)
  • 이모지 : 4bit로 JS에서 두칸을 차지한다.
  • 일반적으로 작은 따옴표 사용 => 키워드/식별자와의 구별을 위함
  • 원시타입이므로 참조값이 아닌 원시값. 독립적이다. (깊은 복사) <-> 참조값: 연결된다 (얕은 복사)

 

4. 템플릿 리터럴

  • 멀티라인 문자열, 표현식 삽입, 태그드 템플릿 등 문자열 처리기능
    • 멀티라인 문자열 : 줄바꿈, 공백등 표시시 백슬레시 이스케이프 시퀀스
  • 런타임에서 일반 문자열로 변환
  • 벡틱(`)사용

 

5. Undefined 타입

  • Undefined가 유일하다.
  • 변수초기화시 사용하므로, 개발자가 직접입력하는 것은 좋지 않으며, 이때는 null을 사용한다.

 

6.. null 타입

  • 의도적부재(intentional absense) 명시
  • 참조 명시적제거, 가비지 콜렉션
  • Null 을 할당한다고 해서 유용하지는 않다. 변수가 사라지지 않아 메모리 절약이되거나 스코프 줄이는 역할이 되지않는다.
    => 블록 안에서만 유효하게 마들도록 스코프를 줄이는 것이 낫다.
  • Document에서 찾지 못한 경우 null 을 반환한다.

 

7. Symbol 타입

  • 이름 충돌 위험이 없는 객체의 유일한 프로퍼티 키 생성 시 사용
  • 전역 심벌 테이블 : Symbol.for('id') 은 전역에 설정되어 해당 값은 하나를 가짐. 여러변수에 새로 할당되어도 동일한 값이다.

 

8. 데이터타입의 중요성

  • 데이터 타입에 따라서 값을 해석한다.
  • 값 저장시 메모리 공간 크기 결정
  • 참조시 메모리 공간 크기 결정
  • 메모리에서 읽은 2진수 해석 방법 결정