자바스크립트 Deep Dive - 06장 데이터 타입

ddullgi·2022년 9월 19일
0
post-thumbnail

Chapter6. 데이터 타입


  • 자바스크립트의 모든 값은 데이터 타입을 갖는다.
  • 자바스크립트(ES6)는 7개의 데이터 타입을 제공한다.

6.1 숫자 타입

  • 자바스크립트는 다른 프로그래밍 언어와 다르게 하나의 숫자 타입만 존재한다.

  • ECMAScript 사양에 따르면 숫자 타입의 값은 배정밀도 64비트 부동소수점 형식을 따른다.

  • 즉, 모든 수를 실수로 처리하며, 정수만 표현하기 위한 데이터 타입은 X

var binary = 0b01000001; // 2진수
var octal = 0o101; // 8진수
var hex = 0x41; // 16진수
  • 숫자 타입은 추가적으로 세 가지 특별한 값도 표현할 수 있다.
    • Infinity: 양의 무한대
    • -Infinity: 음의 무한대
    • NaN: 산술 연산 불가(not-a-number)

6.2 문자열 타입

  • 문자열 타입은 텍스트 데이터를 나타내는데 사용한다.

  • 문자열은 0개 이상의 16비트 유니코드 문자(UTF-16)의 집합으로 전 세계 대부분의 문자를 표할 수 있다.

  • 키워드나 식별자 같은 토큰과 구별하기 위해 따옴표로 감싼다.


6.3 템플릿 리터럴

  • ES6부터 도입된 새로운 문자열 표기법이다.
  • 멀티라인 문자열, 표현식 삽입, 태그드 템플릿 등 편리한 문자열 처리 기능을 제공한다.
  • 런타임에 일반 문자열로 변환되어 처리된다.
  • 문자열과 비슷해 보이지만 작은따옴표('') 또는 큰따옴표("") 같은 일반적인 따옴표 대신 백틱(``)을 사용한다.

1) 멀티라인 문자열

var str = `hello
world`;

2) 표현식 삽입

console.log(`1 + 2 = ${1 + 2}`);

6.4 불리언 타입

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

6.5 undefined 타입

  • 자바스크립트 엔진이 변수를 초기화 할 때 사용하는 값이다.
  • 개발자가 의도적으로 할당 X (Null 사용) - 취지에 어긋난다.
  • 변수를 참조했을 때undefined가 반환 된다면, 참조한 변수가 선언 이후 값이 할당된 적이 없는, 즉 초기화되지 않은 변수라는 것을 알 수 있다.

6.6 Null 타입

  • 값이 없다는 것을 의도적으로 명시할 때 사용한다.
  • 변수에 Null을 할당하는 것은 변수가 이전에 참조하던 값을 더 이상 참조하지 않겠다는 의미이다.
    • 이전에 할당되어 있던 값에 대한 참조를 명시적으로 제거
    • 참조하지 않는 공간에서 가비지 컬렉터를 실행한다.

6.7 심벌 타입

  • 변경 불가능한 원시 타입이다.
  • 다른 값과 중복되지 않는 유일무이한 값이다.
  • 주로 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용한다.

6.8 객체 타입

  • 앞서 말한 6가지 데이터 타입을 이외의 값은 모두 객체 타입이다.

6.9 테이터 타입의 필요성


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

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

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

  • 메모리에서 읽어들인 값의 해석을 하기위해 필요하다.
    • 몇 진수냐에 따라 해석이 달라짐

6.10 동적 타이핑

  • 자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정(타입 추론)된다.
  • 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다.

문제점

  • 타입이 언제든 변경 될 수 있기 때문에, 복잡한 프로그램에서는 사용하기 어렵다.
  • 개발자의 의도와 상관없이 자바스크립트에 의해 암묵적으로 타입이 변하기도 한다.



이스케이프 시퀀스

이스케이프 시퀀스의미
\0Null
\b백스페이스
\f폼 피드: 프린터로 출력할 경우 다음 페이지의 시작 지점으로 이동한다.
\n개행: 다음 행으로 이동
\r개항: 커서를 처음으로 이동
\t탭(수평)
\v탭(수직)
\uXXXX유니코드
\ '작은 따옴표
\ "큰 따옴표
\ \ 백슬래시

라인 피드와 캐리지 리턴

개행 문자는 텍스트의 한 줄이 끝남을 표시하는 문자 또는 문자열이다. 개행 문자에는 라인 피드와 캐리지 리턴이 있다.

과거 타자기에서 커서를 제어하는 방식에서 비롯된 시퀀스이다.

지금은 일반적으로 라인 피드(LF)를 사용한다.


동적 타입과 정적 타입 언어

정적 타입 언어

  • 변수를 선언 할때 사전에 데이터 타입을 선언해야 한다.
  • 컴파일 시점에 타임 체크를 실행한다.
  • ex) 자바, C, C++

동적 타입 언어

  • 변수를 선언할 때 타입을 선언하지 않는다.
  • 변수는 선언이 아닌 할당에 의해 타입이 결정된다.(타입 추론)
  • 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다.
  • ex) 자바스크립트, 파이썬
profile
프론트엔드개발자를 꿈꾸는 예비 개발자

0개의 댓글