데이터 타입(Data Type)

건둔덕 ·2022년 6월 20일
1

Javascript

목록 보기
5/28
post-thumbnail

자바스크립트(ES6 기준)는 7개의 데이터타입을 제공하며 7개의 데이터 타입은 원시타입과 객체타입으로 분류할 수 있다.

원시 타입의 종류에는

  • 숫자(number) 타입
  • 문자열(string) 타입
  • 불리언(boolean) 타입
  • undefined 타입
  • null 타입
  • 심벌(symbol) 타입

객체 타입은 객체, 함수, 배열 등으로 분류된다.

데이터 타입의 구분은 매우 중요하다. 예를 들면, 숫자 타입의 10과 문자열 타입의 '10'은 엄연히 다른 값이기 때문이다.

숫자 타입의 10과 문자열 타입의 '10'은 용도 자체가 다르다. 숫자 타입의 값은 산술 연산을 위한 용도로 쓰이지만 문자열 타입의 값은 주로 텍스트를 화면에 노출 시키기위해 사용되기 때문이다. 또한 확보해야할 메모리 공간의 크기도 다르고 메모리에 저장되는 2진수도 다르며 읽고 해석하는 방식도 다르다.

숫자 타입 (Number Type)

C언어나 자바의 경우에는 정수와 실수를 따로 구분지어 int, long, float, double 등과 같은 여러 숫자타입을 제공한다. 하지만 자바스크립트는 이와 다르게 하나의 숫자 타입만 존재한다.

자바스크립트의 숫자 타입은 정수만을 위한 숫자 타입은 따로 없으며 모든 수를 실수로 표현한다. 즉, 정수로 표현된다고 해도 사실은 실수라는 것을 의미한다. 이러한 특성 때문에 정수끼리 나누더라도 실수가 나올 수 있다.

추가적으로 숫자 타입은 세 가지 특별한 값도 표현할 수 있다.

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

여기서 주의할 점은 자바스크립트는 대소문자를 구분하기 때문에 NaN을 NAN, Nan, nan 등과 같이 표현하게 되면 자바스크립트는 식별자로 오해하기 때문에 에러가 나므로 주의 해야한다.

문자열 타입 (String Type)

문자열 타입은 텍스트 데이터를 나타내는데 사용한다. 문자열은 보통 작은따옴표(''), 큰따옴표(""), 백틱(``)으로 텍스트를 감싸게 되는데 자바스크립트에서 가장 일반적으로 사용 하는 표기법은 작은따옴표를 사용하는 것이다.

불리언 타입 (Boolean Type)

불리언 타입의 값은 참과 거짓을 나타내는 true와 false뿐이다.

불리언 타입의 값은 참과 거짓으로 구분되는 조건에 의해 프로그램의 흐름을 제어하는 조건문에서 자주 사용한다.

undefined 타입

undefined 타입의 값은 undefined가 유일하며, 보통 var 키워드로 변수를 선언할 때 그 변수안의 값을 undefined로 초기화 한다.

따라서 변수 선언을 한 이후 값을 할당하지 않고 변수를 참조하게되면 undefined가 출력된다.

null 타입

null 타입의 값은 null이 유일하다.

프로그래밍 언어에서 null은 변수에 값이 없다는 것을 의도적으로 명시할 때 사용한다. 변수에 null을 할당 하는 것은 변수가 이전에 참조하던 값을 더 이상 참조하지 않겠다는 의미이다. 이는 이전에 할당되어 있던 값에 대한 참조를 명시적으로 제거하는 것을 의미하며, 자바스크립트 엔진은 누구도 참조하지 않는 메모리 공간에 대해 가비지 콜렉션을 수행할 것이다.

함수가 유효한 값을 반환할 수 없는 경우 명시적으로 null을 반환하기도 한다.
아래의 예시를 예로들면 된다.

<!DOCTYPE html>
<html>
<head></head>
<body>
    <script>
        var elem = document.getElementById('elem');

        console.log(elem); //null
    </script>   
</body>
</html>

심벌 타입 (Symbol Type)

심벌 타입을 ES6에서 추가된 7번째 타입으로, 변경 불가능한 원시 타입의 값이다. 심벌의 값은 다른 값과 중복되지 않는 유일무이한 값이다. 따라서 주로 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용한다.

심벌 외에 원시 값은 리터럴을 통해 생성하지만 심벌은 Symbol 함수를 호출해 생성한다. 이때 생성된 심벌값은 외부에 노출되지 않으며, 다른 값과 절대 중복되지 않는 유일무이한 값이다.

profile
건데브

0개의 댓글