데이터는 메모리에 저장하고 이를 참조해서 사용할 수 있어야 한다.
이 과정속에서 데이터 타입이 필요한 이유를 3가지 관점에서 생각해 볼 수 있다.
우리에게 주어진 메모리 공간은 한정적인데 이 데이터를 저장하려면 얼마의 메모리 공간이 필요할까??
즉, 몇 바이트의 메모리 공간을 사용해야 효율적으로 값을 저장할 수 있는지 모른다.
let num = 50;
자바스크립트 엔진은 숫자 50이라는 값을 저장하기 위해 메모리 공간을 확보하고 num이라는 이름을 붙인다.
그리고 num이라는 공간에 숫자 50이라는 값을 2진수 형태로 저장한다.
이 과정에서 우리는 얼마의 메모리 공간을 확보해줘야 하는 것인지 명시해주지 않고 있다.
사실은, 우리가 안 해줘도 된다.
자바스크립트 엔진이 데이터 타입, 즉 값의 종류에 따라 정해진 크기의 메모리 공간을 확보해 주기 때문이다.
위 코드의 경우 자바스크립트 엔진은 50을 'number(숫자)'타입의 값으로 해석하고, 숫자 타입의 50이라는 값을 저장하기 위해 8바이트의 메모리 공간을 확보한다.
그리고 50을 2진수로 저장한다.
즉 우리가 변수에 할당하려는 값의 '데이터 타입'에 따라 확보해야 할 메모리 공간의 크기가 결정된다.
이처럼 어떤 데이터를 저장하는 과정에서 얼마의 메모리 공간을 확보할 것인지 알기 위해 데이터 타입이 필요하다.
num이라는 변수를 통해 50이라는 값이 저장되어 있는 메모리 공간을 찾아갈 수 있다.
이때 값을 참조하기 위해서는 한 번에 읽어 들여야 할 메모리의 크기를 알아야 한다.
num변수의 경우, 저장되어 있는 값이 'number(숫자)' 타입이므로 8바이트 단위로 읽지 않으면 원하는 값을 얻어낼 수 없다.
그렇다면 컴퓨터는 어떻게 한 번에 읽어들일 메모리의 크기를 알아낼 수 있을까?
자바스크립트 엔진은 변수에 'number(숫자)'타입의 값이 할당되어 있기 때문에 num변수를 숫자 타입으로 인식한다.
숫자 타입은 8바이트 단위로 저장되므로 num변수를 참조하면 8바이트 단위로 메모리를 읽어 들여 값을 얻어낼 수 있는 것이다.
이처럼 어떤 데이터를 참조하는 과정에서 얼마의 메모리 공간을 읽어 들일지 알기 위해 데이터 타입이 필요하다.
위에서 적절한 크기의 메모리 공간에 값을 '저장'했고, 적절한 크기의 메모리 공간을 읽어들여 값을 '참조'했다.
하지만 이 값을 사용하려고 가져왔더니 값이 2진수 형태로 저장되어 있다.
만약 메모리에서 읽어들인 2진수를 0100 0001이라고 한다면, 이는 숫자 65일 수도 있고, 문자 'A'일 수도 있다.
즉 어떻게 해석하느냐에 따라 값이 달라질 수 있다.
이때, 2진수를 어떻게 해석할지 결정하는 방법으로 데이터 타입이 쓰인다.
즉 우리가 변수 num에 50이라는 값을 숫자 타입으로 저장했기 때문에 읽어 들인 2진수를 숫자 타입으로 해석해서 우리가 예상했던 값인 50을 반환해 줄 수 있는 것이다.
- 값을 저장할 때 필요한 메모리 공간의 크기를 알기 위해
- 값을 참조할 때 한 번에 읽어 들일 메모리 공간의 크기를 알기 위해
- 메모리에서 읽어 들인 2진수를 어떻게 해석할지 알기 위해