[JS] 데이터 타입(원시 / 객체)

2448 단어 JavaScriptJavaScript

1. Primitive Type

1) number

  • 모든 수를 실수로 처리
  • Infinity, -Infinity, NaN
  • BigInt형: 정수 리터럴 끝에 n 붙이기

2) string

  • "큰 따옴표", '작은 따옴표', 역 따옴표(backtick)
  • immutable value(변경 불가능한 값)
  • 템플릿 리터럴 : 백틱(``) 사용
    • 멀티라인 문자열: escape sequence, Array.prototype.join 없이 줄바꿈, 공백 표현 가능
    • 표현식 삽입: ${표현식} → 문자열로 타입 강제 변환
      ex) console.log(the result is ${1+2});

3) boolean

  • true, false
  • "0" : true -> 비어있는 문자열("")을 제외한 모든 문자열 true

4) undefined

  • 값이 할당되지 않은 상태, 초기화되지 않은 상태
  • 개발자가 의도적으로 할당하지 않는게 좋음
    - 비어있는 상태를 나타낼 경우, null 할당

5) null

  • 존재하지 않는 값, 비어있는 값
  • 변수에 값이 없는 걸 명시하고자할 때 사용

6) symbol

  • 변경 불가능
  • 다른 값과 중복되지 않는 유일무이한 값
  • 외부에 노출되지 않음
  • 객체의 유일한 프로퍼티 키를 만들 때 사용
  • (리터럴이 아닌) Symbol 함수를 호출하여 생성
let id = Symbol('id'); // 심볼 id에는 'id'라는 설명이 붙음

2. Object/Reference Type

  • 복잡한 데이터 구조 표현 (객체, 함수, 배열, ...)

    자바스크립트는 객체 기반의 언어이며, 자바스크립트를 이루고 있는 거의 모든 것은 객체이다.

데이터 타입이 필요한 이유?

  • 값을 저장할 때, 확보해야 할 필요한 메모리 공간의 크기를 결정하기 위해
  • 값을 참조할 때, 읽어들어야 할 메모리 공간의 크기를 결정하기 위해
  • 메모리에서 읽은 2진수를 어떻게 해석할 지 결정하기 위해
    - 2진수 0100 0001 → 숫자65, 문자열A

동적 타이핑

  1. static/strong 정적 타입 언어: C, C++, JAVA, GO, ...
  • 명시적 타입 선언: 데이터 타입을 사전에 선언해야 함
  • 변수 타입 변경 불가
  • 컴파일 시점에 타입 체크 수행 → 안정적인 코드 구현, 런타임 에러 감소
  1. dynamic/weak 동적 타입 언어: JS, Python, PHP, Ruby, ...
  • (선언이 아닌) 할당에 의해 타입 결정
  • 동적 타이핑: 재할당에 의해 변수 타입 변경 가능
  • 타입 확신 불가, JS 엔진에 의해 타입 자동 변환되기도 함 → 변수 사용에 주의가 필요
  • 변수 사용 시 주의 사항
    - 꼭 필요한 경우에만 제한적 사용
    - scope(유효 범위) 최대한 좁게
    - 전역 변수 되도록 사용 X
    - 변수보다는 상수 사용
    - 네이밍 중요 !

좋은 웹페이지 즐겨찾기