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

2025. 3. 19. 16:44·Study/JavaScript
반응형

이웅모, 위키북스


데이터 타입 = 값의 종류

* 자바스크립트의 데이터 타입 7개

(1) 원시 타입

- 숫자(number) 타입

- 문자열(string) 타입

- 불리언(boolean) 타입

- undefined 타입

- null 타입

- 심벌(symbol) 타입

(2) 객체 타입: 객체, 함수, 배열 등

 

6.1 숫자 타입

정수, 실수 구분 없이 하나의 숫자 타입만 존재

배정밀도 64비트 부동소수점 형식을 따름: 모든 수를 10진수 실수로 처리

3가지 특별한 값 존재: Infinity(양의 무한대), -Infinity(음의 무한대), NaN(not-a-number, 산술 연산 불가)

 

6.2 문자열 타입

UTF-16(16비트 유니코드 문자)의 집합으로 표현

작은따옴표(' '), 큰따옴표(" "), 백틱(` `)으로 감쌀 수 있음 → 일반적으로 작은따옴표 사용

키워드나 식별자 같은 토큰으로 인식하지 않고, 공백 문자를 포함할 수 있도록 따옴표로 감싸야 한다.

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

 

6.3 템플릿 리터럴

ES6부터 도입된 새로운 문자열 표기법

멀티라인 문자열, 표현식 삽입, 테그드 템플릿 등 편리한 문자열 처리 기능을 제공

백틱(` `)을 사용해 표현 (ex. var template = `Template literal`;)

 

1. 멀티라인 문자열

일반 문자열 내에서는 줄바꿈 등의 공백 표현을 위해 이스케이프 시퀀스를 사용해야 한다.

그러나 템플릿 리터럴에서는 이스케이프 시퀀스를 사용하지 않고도 줄바꿈 등 모든 공백이 그대로 적용된다.

 

* 이스케이프 시퀀스(escape sequence):

\0: Null, \b: 백스페이스, \f: 폼피드, \n: 개행(Line Feed), \r: 개행(Carrige Return), \t: 탭(수평), \v: 탭(수직), \uXXXX: 유니코드

 

2. 표현식 삽입

일반 문자열은 문자열 연산자 +를 사용하여 문자열을 연결  → 피연산자 중 하나 이상이 문자열인 경우 동작

템플릿 리터럴 내에서는 표현식 삽입 ${}을 사용하여 표현식을 감쌈 → 표현식의 평가 결과가 문자열이 아니더라도 문자열로 타입 강제 변환 (ex. `1+2=${1+2}` 이면 1+2=3)

 

6.4 불리언 타입

true, false 값만 존재

 

6.5 undefined 타입

undefined 값만 유일하게 존재

var 키워드로 선언된 변수에 암묵적으로 할당되는 값

undefined: 변수에 값을 할당하여 변수의 실체를 명확히 하는 것

 

6.6 null 타입

null 값만 유일하게 존재

변수에 값이 없다는 것을 의도적으로 명시할 때 사용(intentional absence)

이전에 참조하던 값에 대한 참조를 명시적으로 제거 → 아무것도 참조하지 않는 메모리 공간에 대해 가비지 콜렉션 수행됨

함수가 유효한 값을 반환할 수 없는 경우 명시적으로 null을 반환하기도 한다.

 

6.7 심벌 타입

ES6에서 추가된 타입

다른 값과 중복되지 않는 변경 불가능한 원시 타입의 유일 값 → 주로 객체의 유일한 프로퍼티 키를 만들기 위해 사용

심벌 외의 원시 값이 리터럴을 통해 생성하는 것과 달리 Symbol 함수를 호출해 생성

생성된 심벌 값은 외부에 노출되지 않음 (ex. var key = Symbol('key');)

 

6.8 객체 타입

위 6가지 데이터 타입 이외의 모든 값 (11장에서 설명)

 

6.9 데이터 타입의 필요성

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

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

자바스크립트 엔진은 데이터 타입, 즉 값의 종류에 따라 정해진 크기의 메모리 공간을 확보한다.

값을 참조할 때에도 한 번에 읽어 들여야 할 메모리 공간의 크기를 데이터 타입으로 인식한다.

 

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

메모리에서 읽어 들인 2진수, 즉 비트의 나열을 어떻게 해석할지 데이터 타입에 따라 결정된다.

 

6.10 동적 타이핑

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

  • 정적 타입 언어(static/strong type): 명시적 타입 선언, 컴파일 시점에 타입 체크 수행

    → 타입의 일관성을 강제하여 안정적인 코드 구현, 런타임 발생 에러를 감소시킴

    (ex. C, C++, 자바, 코틀린, 고, 하스켈, 러스트, 스칼라 등)

  • 동적 타입 언어(dynamic/weak type): 데이터 타입에 무관하게 값 할당 가능, 유연성은 높지만 신뢰성은 낮다.

    → 변화하는 값 추적의 어려움, 값 확인 전까지 변수 타입을 확신할 수 없음, 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되기도 함 → 오류 발생률 증가

    ∴ 변수 개수를 최소한으로 유지, 유효 범위(스코프) 최소화, 전역 변수 사용 자제, 변수보다 상수 사용, 변수의 목적이나 의미를 파악할 수 있도록 네이밍

    (ex. 자바스크립트, 파이썬, PHP, 루비, 리스프, 펄 등)

 

자바스크립트는 동적 타입 언어

  • 타입 추론: 자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정됨
  • 동적 타이핑: 재할당에 의해 변수의 타입이 언제든지 동적으로 변할 수 있음

변수는 타입을 갖지 않고, 값은 타입을 갖는다 → 현재 변수에 할당된 값에 따라 변수 타입이 동적으로 결정되는 것.

반응형

'Study > JavaScript' 카테고리의 다른 글

[모던 자바스크립트 Deep Dive] 5장 표현식과 문  (1) 2025.03.16
[모던 자바스크립트 Deep Dive] 4장 변수  (1) 2025.03.16
[모던 자바스크립트 Deep Dive] 3장 자바스크립트 개발 환경과 실행 방법  (1) 2025.03.15
[모던 자바스크립트 Deep Dive] 2장 자바스크립트란?  (4) 2025.03.14
[모던 자바스크립트 Deep Dive] 1장 프로그래밍  (1) 2025.03.13
'Study/JavaScript' 카테고리의 다른 글
  • [모던 자바스크립트 Deep Dive] 5장 표현식과 문
  • [모던 자바스크립트 Deep Dive] 4장 변수
  • [모던 자바스크립트 Deep Dive] 3장 자바스크립트 개발 환경과 실행 방법
  • [모던 자바스크립트 Deep Dive] 2장 자바스크립트란?
harchiving
harchiving
Computer Science Engineering, undergraduate student
  • harchiving
    harchiving
    harchiving
  • 전체
    오늘
    어제
    • 분류 전체보기 (21)
      • Study (21)
        • JavaScript (6)
        • OS (8)
        • DateBase (7)
      • Review (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프로그래밍
    데이터베이스
    공룡책
    모던자바스크립트딥다이브
    operatingsystemconcepts
    OS
    FE
    javascript
    자바스크립트
    사자책
    OperatingSystem
    운영체제
    SQL
    js
    DATABASE
    SQLD
    DB
    프론트엔드
    데이터베이스개론
    명품운영체제
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.3
harchiving
[모던 자바스크립트 Deep Dive] 6장 데이터 타입
상단으로

티스토리툴바