[모던 자바스크립트 Deep Dive] 데이터 타입

2024. 4. 22. 22:44· 모던 자바스크립트 Deep Dive
목차
  1. 6-2 문자열 타입
  2. 6-3 템플릿 리터럴
  3. 6-4 불리언 타입
  4. 6-5 undefined 타입
  5. 6-6 null 타입
  6. 6-7 심벌 타입
  7. 6-8 객체 타입
  8. 6-9 데이터 타입의 필요성
  9. 데이터 타입에 의한 메모리 공간의 확보와 참조
  10. 데이터 타입에 의한 값의 해석
  11. 6-10 동적 타이핑
  12. 동적 타입 언어와 정적 타입 언어
  13. 동적 타입 언어와 변수

데이터 타입은 값의 종류를 말하며, ES6는 7개의 데이터 타입을 제공한다.
7개의 데이터 타입은 원시 타입과 객체 타입으로 분류 할 수 있다.

  • 원시타입: 숫자, 문자열, 불리언, undefined, null, symbol
  • 객체타입: 객체, 함수, 배열 등6-1 숫자 타입

숫자 타입의 값은 배정밀도 64비트 부동소수점 형식을 따름. 즉 모든 수를 실수로 처리하고 정수만 표현하기 위한 데이터 타입은 존재 하지 않음

// 숫자타입은 모두 실수로 처리된다.
console.log(1 === 1.0); // true 

숫자 타입은 추가적으로 세 가지 특별한 값도 포함한다.

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

6-2 문자열 타입

문자열 타입은 0개 이상의 16비트 유니코드 문자 (UTF-16) 의 집합이다.

문자열은 '', "", 백틱으로 텍스트를 감싸서 표현한다.

자바스크립트에서 문자열은 원시 타입이며 변경 불가능한 값이다.

6-3 템플릿 리터럴

ES6 부터 백틱을 사용한 새로운 문자열 표기법이 도입되었다.
백틱내에서는 개행과 공백이 허용되고, ${} 를 통해 표현식을 넣을 수 도 있다.

var template = `
    <ul>
        <li>${1 + 1}</li>
    </ul>
`

6-4 불리언 타입

true와 false로 이루어져 있다. 조건문에서 자주 사용.

6-5 undefined 타입

자바스크립트 엔진이 변수를 초기화 할 때 사용하는 값.

개발자가 의도적으로 변수에 할당하는 것은 undefined 의 본래 취지 와 맞지 않기 때문에 바람직 하지 않다.

개발자는 대신 null을 사용하는 것이 좋다.

6-6 null 타입

null은 개발자가 변수에 값이 없음을 의도적으로 명시 할 때 사용한다.

이는 참조를 명시적으로 제거하며, 해당 참조하지 않는 공간에 가비지 콜렉션을 수행 할 것이다.

6-7 심벌 타입

자바스크립트 객체 특성상 키 값은 유일하여야 한다.

십벌은 ES6에서 추가된 타입으로 다른 값과 중복되지 않는 유일한 값이다.

객체의 유일한 프로퍼티 키를 만들기 위해 사용된다.

6-8 객체 타입

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

자바스크립트에서 6가지 원시 타입 외의 모든 값은 객체이다.

6-9 데이터 타입의 필요성

데이터 타입에 의한 메모리 공간의 확보와 참조

메모리에 값을 저장하려면 확보해야 할 메모리 공간의 크기를 결정해야 한다.

var score = 100;

위 코드 실행시 8바이트의 메모리 공간을 확보한다.
-> 자바스크립트에서 숫자는 배정밀도 64비트 부동소수점으로 표현하기 때문에 8바이트

8바이트로 할당되는 score


위의 그림은 참조이며 실수는 64비트 부동소수점 형식이기 때문에 실제 메모리에 위와 같이 저장되지는 않는다.

참조시 score 변수를 참조하면 8바이트 단위로 메모리 공간에 저장된 값을 읽어들인다.

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

0100 0001 은 숫자로 65 문자로 'A' 로 해석된다. 해석의 기준 또한 값의 타입으로 해석한다.

정리하면 타입이 필요한 이유는

  • 값을 저장할 때 확보해야 하는 메모리 공간의 크기를 결정하기 위해
  • 값을 참조할 때 한번에 읽어 들여야 할 메모리 공간의 크기를 결정하기 위해
  • 메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정하기 위해

6-10 동적 타이핑

동적 타입 언어와 정적 타입 언어

C 나 자바는 변수 선언시 타입을 명시한다. 이를 명시적 타입 선언 이라고 한다. 컴파일 시점에 타입 체크를 진행한다.

자바스크립트는 정적 타입 언어와 다르게 변수 선언 시점이 아닌 할당 시에 타입을 추론한다.

var foo;
console.log(typeof foo); // undefined;

foo = 3;
console.log(typeof foo); // number

foo = 'hello';
console.log(typeof foo); // string

foo = true;
console.log(typeof foo); // booean

foo = null;
console.log(typeof foo); // object

foo = Symbol();
console.log(typeof foo); // symbol

foo = {};
console.log(typeof foo); // object

foo = [];
console.log(typeof foo); //object

foo = function () {};
console.log(typeof foo); // function

자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정된다. 그리고 재할당에 의해 변수의 타입은 얼마든지 동적으로 변할 수 있다. 이러한 특징을 동적 타이핑 이라고 한다.

위와 같은 언어는 동적 타입 언어라고 한다.

동적 타입 언어와 변수

이러한 언어의 특징은 타입에 대해 유연하지만 반대로 신뢰성이 낮다.

안정적인 프로그램을 만들기 위해 변수를 사용하기 이전 데이터 타입을 체크하는 코드를 넣으면 코드의 양도 늘어나고 번거롭다.

'모던 자바스크립트 Deep Dive' 카테고리의 다른 글

[모던 자바스크립트 Deep Dive] 연산자  (0) 2024.04.29
[모던 자바스크립트 Deep Dive] 제어문  (0) 2024.04.23
[모던 자바스크립트 Deep Dive] 표현식과 문  (0) 2024.04.21
[모던 자바스크립트 Deep Dive] 변수  (0) 2024.04.21
[모던 자바스크립트 Deep Dive] 자바스크립트란  (2) 2024.04.20
  1. 6-2 문자열 타입
  2. 6-3 템플릿 리터럴
  3. 6-4 불리언 타입
  4. 6-5 undefined 타입
  5. 6-6 null 타입
  6. 6-7 심벌 타입
  7. 6-8 객체 타입
  8. 6-9 데이터 타입의 필요성
  9. 데이터 타입에 의한 메모리 공간의 확보와 참조
  10. 데이터 타입에 의한 값의 해석
  11. 6-10 동적 타이핑
  12. 동적 타입 언어와 정적 타입 언어
  13. 동적 타입 언어와 변수
'모던 자바스크립트 Deep Dive' 카테고리의 다른 글
  • [모던 자바스크립트 Deep Dive] 연산자
  • [모던 자바스크립트 Deep Dive] 제어문
  • [모던 자바스크립트 Deep Dive] 표현식과 문
  • [모던 자바스크립트 Deep Dive] 변수
개발깎새
개발깎새
프론트엔드 개발을 깎으며 인사이트를 공유하는 블로그입니다.
개발깎새
프론트 깎는 티스토리
개발깎새
전체
오늘
어제
  • 분류 전체보기 (25)
    • 모던 자바스크립트 Deep Dive (15)
    • 개발 (1)
    • 함수형 프로그래밍과 ES6+ (5)
    • 친절한 SQL 튜닝 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 슬래시24
  • SQL
  • 데이터 분석
  • 토스
  • 데이터 웨어하우스
  • 컨퍼런스
  • cs
  • SQLP
  • 전천후 데이터 분석을 위한 dw 설계 및 운영하기
  • 자바스크립트
  • slash 24
  • 모던 자바스크립트 Deep Dive
  • 함수형 프로그래밍
  • 프론트엔드
  • 라이브러리

최근 댓글

최근 글

hELLO · Designed By 정상우.
개발깎새
[모던 자바스크립트 Deep Dive] 데이터 타입
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.