개발 기초/언어

[JavaScript] 데이터 타입

숩니따 2024. 11. 11. 14:06

데이터 타입 종류

원시 타입

숫자 타입

  • 숫자 타입의 값은 배정밀도 64비트 부동소수점 형식의 2진수로 저장되며, 모든 수를 실수 처리하고 정수만 표현하기 위한 데이터 타입이 별도 존재하지 않음
  • 특별 값 표현 가능
    • Infinity : 양의 무한대
    • -Infinity : 음의 무한대
    • NaN : 산술 연간 불가(not-a-number)
      ※ 대소문자 구분 필수

문자열 타입

  • 텍스트 데이터를 나타내는 데 사용되며 문자열은 0개 이상 16비트 유니코드(UTF-16)의 집합으로 전 세계 대부분 문자 표현 가능
  • 문자열은 작은따옴표(가장 일반적인 표기법), 큰따옴표, 백틱으로 택스트로 감싸서 사용 (키워드나 식별자 같은 토큰 구분을 위해 사용)
  • 원시 타입이며, 변경 불가능한 값으로 문자열 생성되면 변경 불가능

템플릿 리터럴

새로운 문자열 표기법으로 백틱을 사용하여 표현

  • 멀티라인 문자열 : 이스케이프 시퀀스를 사용하지 않아도 줄바꿈이 혀용되지 않음
  • 표현식 삽입 : 문자열 연산자 +를 사용해 문자열 연결 연산자로 동작하나, 리터럴 케이스의 경우 ${}으로 표현식을 감싸 표현식의 평가 결과가 문자열이 아니더라도 문자열로 타입 강제로 변환되어 삽입

불리언 타입

논리적 참, 거짓을 나타내는 truefalse 뿐으로 주로 조건문에서 자주 사용

undefined 타입

undefined가 유일한 값으로 var로 선언된 변수는 암묵적으로 빈 상태로 undefined로 초기화되는데 개발자가 의도적으로 할당되지 않고 자바스크립트 엔진이 변수를 초기화하는데 사용

null 타입

null가 유일한 값으로 대소문자 구분하여 프로그래밍 언어에서 변수에 값이 없다는 것을 의도적으로 개발자가 명시할 때 사용하여

  • 참조를 명시적으로 제거하는 것을 의미
  • 함수가 유효한 값을 변환할 수 없는 경우 반환

심벌 타입

ES6에서 추가된 7번째 타입으로, 변경 불가능한 원시 타입의 값

  • 외부에 노출하지 않고 다른 값과 중복되지 않는 유일무이한 값
  • 주로 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용
  • symbol 함수를 호출하여 생성

객체 타입

자바스크립트를 이루는 거의 모든 것으로 객체, 함수 배열을 포함

데이터 타입의 필요성

메모리 공간의 확보와 참조

  • 값을 저장할 때 확보해야 하는 메모리 공간의 크기를 결정하기 위해
  • 값을 참조할 때 한 번에 읽어 들여야 할 메모리 공간의 크기를 결정하기 위해

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

메모리에 저장된 2진수를 해석 방법을 결정하기 위해

동적 타이핑

정적 타입 언어

  • C나 Java가대표적
  • 명시적 타입 선언 : 변수를 선언할 때 변수에 할당할 수 있는 값의 종류, 데이터 타입을 사전에 선언
  • 컴파일 시점에 타입 체크를 수행 후 통과하지 못하면 에러 발생시키고 프로그램 실행 자체를 막음

동적 타입 언어

  • JavaScript, Python이 대표적
  • var, let, const 키워드 사용해 변수를 선언할 뿐 타입을 선언하지 않음
  • 값을 할당하는 시점에 변수의 타입이 동적으로 결정되고 변수의 타입을 자유롭게 변경 가능
  • 타입추론
  • 동적 타이핑

동적 타입 언어와 변수

장단점

  • 장점
    • 편리함
  • 단점
    • 복잡한 프로그램에서 변화하는 변수 값 추적 어려움
    • 값을 확인하기 전 타입 확신할 수 없음

자바스크립트의 타입의 특징

자바스크립트 엔진에 의해 타입이 자동으로 변환되기도 함

변수 사용 시 주의 상황

  • 변수는 꼭 필요한 경우 제한적으로 사용 (최소한으로 유지)
  • 변수 유효 범위를 최대한 좁게 만들어 변수 부작용 억제
  • 전역 변수는 어디서든지 참조와 변경이 가능하고 다른 코드에 영향 줄 가능서도 높아 최대한 사용 자제
  • 변수보다는 상수를 사용해 값의 변경을 억제
  • 변수 이름은 목적이나 의미를 파악할 수 있도록 네이밍 (가독성 좋은 코드)

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

'개발 기초 > 언어' 카테고리의 다른 글

[JavaScript] 제어문  (0) 2024.11.12
[JavaScript] 연산자  (0) 2024.11.11
[JavaScript] 표현식과 문  (0) 2024.11.11
[JavaScript] 변수  (1) 2024.10.30
[JavaScript] 프로그래밍과 자바스크립트  (1) 2024.10.30