자바스크립트에는 7개의 타입이 존재

구분 데이터 타입 설명
원시 타입 (변경 불가) 숫자 타입 하나의 타입만 존재
  문자열 타입  
  불리언 타입 T/F
  undefined 타입  
  null 타입 값 없음 의도적 명시
  심벌 타입  
객체 타입   객체, 함수 배열

6.1 숫자 타입

  • 하나의 숫자 타입만 존재
  • 배정밀도 64비트 부동소수점 형식 2진수로 저장 (정수로 표시된다고 해도 실수로 저장될 수 있음)
  • Infinity, -Infinity, NaN(not-a-number)

6.2 문자열 타입

  • ‘’ / “” / `` (작은 따옴표 일반적)
  • 문자열 내의 “ / ‘ 구분 위해. 동시 존재 X
  • 개행 허용 X → \n 써야함

템플릿 리터럴

  • 런타임에 일반 문자열로 변환되어 처리
  • ` ` (백틱)
  • 개행 허용, 공백 그대로 적용
  • 표현식 삽입 : ${} → 문자열 타입으로 강제 변환 (↔ 문자열 : + 기호)

6. 4 불리언 타입 (True / False)

6. 5 undefined 타입

  • undefined 반환 → 할당 x ⇒ 초기화되지 않은 변수

6.6 null 타입

  • 의도적으로 값 없음 명시하고 싶을 때 (intentional absense)
  • 전에 참조하던 값 더 이상 참조 x

6.7 심벌 타입

  • 다른 값과 중복되지 않는 유일무이한 값.
  • 주로 이름 충돌 위험 없는 객체의 유일한 프로퍼티 키를 만듦
  • Symbol 함수를 호출해 생성
  • 심벌 값은 외부에 노출 X , 다른 값과 중복 X

    6.8 객체 타입 : 자바스크립트를 이루고 있는 거의 모든 것이 객체. 자바스크립트는 객체 기반의 언어 (6가지 타입 외에는 모두 객체)

6.9 데이터 타입의 필요성

  1. 저장할 때 확보할 메모리 공간 크기 결정
  2. 참조할 때 한 번에 읽어들여야 할 메모리 공간 크기 결정
  3. 읽어들인 2진수 어떻게 해석 결정

6.10 동적 타이핑 (dynamic typing)

  • 자바스크립트의 변수는 할당에 의해 타입 결정 (타입 추론type inference)
  • 재할당에 의해 언제든지 동적으로 변화 가능
  • 위험
    • 복잡한 프로그램 변화하는 변수 값 추적 어려움
    • 변수 값 확인 전 타입 확신 X
    • 엔진에 의한 암묵적 타입 자동 변환 (개발자의 의지와 상관 없이)
  • 해결법
    • 변수는 꼭 필요한 경우에 한해 제한적 사용
    • 스코프는 최대한 좁게 → 부작용 억제
    • 전역 변수 최대한 X
    • 상수 사용 권장
    • 변수 이름은 목적, 의미 파악 가능하게

##

“가독성이 좋은 코드가 최고의 코드다.”





이 포스트는 모던 자바스크립트 Deep Dive를 공부하며 정리한 내용입니다.