DeepDiveJS Chapter 06. 데이터 타입

[06장. 데이터 타입]

</br>

✏️ 데이터 타입 설정의 의의는 두괄식 문장 같다.


  사람은 대화 중 정보를 받아들일 때, 맥락을 통해서 문장을 구분해서 듣게 된다. 그렇기 때문에 빠르게 정보를 이해할 수 있게 돕는 자기소개서나 기획서 등은 두괄식으로 작성하게 된다.

데이터 타입이 존재하고, 이것을 설정되는 이유도 이 맥락과 비슷하다.

컴퓨터는 그 어떤 데이터도 0과 1로 이루어져서 이해한다.

우리가 ‘일’이라고 발음했을 때 어떤 맥락인지 모르면 ‘1’인지 ‘일’인지 모르는 것처럼 컴퓨터는 모든 데이터를 최종적으로는 0과 1로 이해하게 된다.

그러니, 그 0과 1이 무엇을 표현하고 있는지 구분하기 위해서 데이터 타입을 설정하게 된다.

</br>

✏️ 데이터 타입은 메모리 관리를 위해서도 사용된다.


  각각의 데이터는 다른 크기를 갖는다.

우리가 데이터를 컴퓨터에 저장하는건 바구니에 내용물을 담는 것과 비슷하다.

액체를 담는지, 고체를 담는지, 크기는 어떤지에 대해서 모른채로 바구니를 준비하라고 하면 누구라도 실수하게 될 것이다.

컴퓨터에게 어떤 것을 담을지 준비할 수 있도록, 데이터 타입을 설정해주게 된다.

또한 데이터 타입에 따라 할당되는 메모리의 크기도, 불러올 때 검색하는 메모리 주소의 크기도 달라지게 된다.

</br>

✏️ 자바스크립트의 동적 타이핑


  JAVA, C언어와 같이 미리 데이터의 타입을 선언해주는 ‘정적 타입 언어’와는 달리, 자바스크립트는 동적 타이핑 언어이다.

자바스크립트는 맥락을 대략적으로 이해해서, 데이터의 타입을 결정해준다.

이는 자바스크립트가 쉽고 편리한 언어가 될 수 있던 이유 중 하나이다.

다만, 무언가를 유추해서 결정하는건 오해를 만들 수 있다.

굉장히 꼼꼼해야하는 디지털 세상에서, 이런 오해는 종종 문제를 만들 수 있다.

그런 점에서 자바스크립트는 쉽고 유연하지만, 신뢰성은 떨어질 수 있다.

이런 부분을 보완한 것이 Typescript이다.

</br>

✏️ 자바스크립트에서의 숫자 타입


  컴퓨터는 소수점 이하의 숫자를 표현하는 여러 방법이 있다. 컴퓨터는 0과 1로 숫자를 표현하기 때문에, 정수를 표현하는 것은 문제가 없다. 2진법으로 정수는 모두 표현할 수 있다. (할당된 메모리에 따라 표현 가능한 범위는 다르겠지만)

문제는 실수이다. 소수점 이하의 수, 0.5 같은 수를 표현하는 것에는 방법의 차이가 생긴다.

  1. 소수점 이하의 수를 정수로서 계산, 정수 부분과 소수 부분을 합치는 방법

  2. 소수점 이하까지의 실수를 2진법을 통해 표현하려는 방식이 있을 것이다.

1의 방식을 고정 소수점 방식 2의 방식을 부동 소수점 방식이라고 한다.

부동 소수점 방식은 숫자가 정확하지 못한 대신, 고정 소수점보다 많은 수를 표현할 수 있어서 많은 언어들이 부동 소수점 방식을 사용한다.

(실제 숫자와 실제로 표현되는 숫자 간의 차이를 다루는 방법은 28장. Number에서 다룬다.)

또한 이런 숫자를 저장하기 위해서 얼마나 많은 메모리를 할당하는지도 차이가 있을 것이다.

C나 JAVA 같은 경우는 int, long, float, double등을 사용해서 정수, 실수, 숫자의 범위에 따라서 메모리 크기를 나누지만

자바스크립트는 배정밀도 64비트 부동소수점 형식 하나로 모든 숫자 타입을 사용하게 된다.