[JavaScript] 데이터 타입

희철·2023년 12월 18일
1
post-thumbnail
post-custom-banner

데이터 타입/타입(data type/type)

  • 원시타입(primitive type)
    • 숫자 타입(number) - 숫자, 정수와 실수 구분 없이 하나의 숫자 타입만 존재
    • 문자열 타입(string) - 문자열
    • 불리언 타입(boolean) - 논리적 참(true)과 거짓(false)
    • undefined 타입 - var 키워드로 선언된 변수에 암묵적으로 할당되는 값
    • null 타입 - 값이 없다는 것을 의도적으로 명시할 때 사용하는 값
    • 심벌 타입(symbol) - ES6에서 추가된 7번째 타입
  • 객체 타입
    • 객체,함수,배열 등

숫자 타입

  • 하나의 숫자 타입만 존재한다.(C나 JAVA의 경우 int, long, float, double등 다양한 숫자 타입이 있음)

  • 모든 수를 실수로 처리하며, 정수만 표현하기 위한 데이터 타입이 존재하지 않는다.

    // 모두 숫자 타입이다.
    let integer = 10; // 정수
    let double = 10.12; // 실수
    let negative = -20; // 음의 정수
  • 2진수, 8진수, 16진수를 표현하기 위한 데이터 타입을 제공하지 않기 때문에 이들 값을 참조하면 모두 10진수로 해석된다.

  • 자바스크림트의 숫자 타입은 모든 수를 실수로 처리한다.
    -> 정수로 표시되어도 사실은 실수라는 것 그래서 정수로 표시되는 수끼리 나누어도 실수가 나올 수 있다.

  • 숫자 타입에 세 가지 특별한 값도 있다.

    • Infinity: 양의 무한대
    • -Infinity: 음의 무한대
    • NaN: 산술 연산 불가 (not-a-number)

문자열 타입

  • 작은따옴표('   '), 큰따옴표("   "), 백틱(`   `)으로 텍스트를 감싸 사용한다. 일반적인 표기법은 작은따옴표를 사용한다.

템플릿 리터럴

  • ES6부터 도입된 새로운 문자열 표기법이다.
  • 백틱(`  `)을 사용해 표현한다.
  • 멀티라인 문자열 기능을 제공한다.


    백틱으로 감싼 문자열은 줄바꿈(개행)이 가능하지만 작은 따옴표로 감싼 일반 문자열은 줄을 바꾸며 온전히 감싸지지 않아 multiline 부분이 키워드나 식별자 같은 토큰으로 인식되어 에러가 발생한다.

표현식 삽입

  • 일반 문자열은 연산자 + 를 사용해 표현식을 연결할 수 있다.
    • + 연산자는 피연산자 중 하나 이상이 문자열인 겨우 문자열 연결 연산자로 동작하고, 그 외의 경우는 덧셈 연산자로 동작한다.

  • 템플릿리터럴은 ${   }으로 표현식을 감싼다.
    • 이때 표현식의 평가는 문자열로 타입이 강제로 변환되어 삽입된다.

불리언 타입

  • 논리적 참, 거짓을 나타내는 truefalse 뿐이다.

undefined 타입

  • undefined가 유일하다.
  • 개발자가 의도적으로 할당하기 위한 값이 아니라 엔진이 변수를 초기화 할 때 사용하는 값이다.
  • JS엔진이 변수를 초기화하는 데 사용하는 undefined를 개발자가 의도적으로 변수에 할당하면 undefined의 본래 취지와 어긋나고, 혼란을 줄 수 있으므로 권장하지 않는다.
    • 변수에 값이 없다는 것을 명시하고 싶을 때는 null을 할당한다.

null 타입

  • null이 유일하다.
  • Null,NULL등과 다르다(자바스크립트는 대소문자를 구별하기 때문)
  • 변수에 값이 없다는 것을 의도적으로 명시할 때 사용한다.
  • 함수가 유효한 값을 반환할 수 없는 경우 명시적으로 null을 바환하기도 한다.

symbol 타입

  • 변경 불가능한 원시 타입의 값이다.
  • 다른 값과 중복되지 않는 유일무이한 값이다.
  • symbol 이외의 원시 값은 리터럴을 통해 생성하지만 symbol은 Symbol 함수를 호출해 생성한다. 이때 생성된 symbol값은 외부에 노출되지 않으며, 다른 값과 절대 중복되지 않는 값이다.

객체 타입

  • 숫자, 문자열, 불리언, undefined, null, symbol 이외의 값은 모두 객체 타입이다.

참고: 모던 자바스크립트 Deep Dive

post-custom-banner

0개의 댓글