자바스크립트에서는 변수를 선언할 때 데이터 타입을 명시하지 않는다.
유연하게 코드를 작성할 수 있지만 데이터 타입이 중요한 이유가 있다.
메모리 공간의 확보와 참조
프로그램에서 값을 저장하고 참조하려면 메모리 공간이 필요하다.
값의 타입을 알면 필요한 메모리 공간의 크기를 결정할 수 있다.
예를 들어, 자바스크립트에서 아래와 같이 변수를 선언하고 숫자 값을 할당하는 경우를 보자.
let a = 10;
이 코드가 실행되면 컴퓨터 내에서 다음과 같은 작업이 이루어진다.
- 숫자를 저장하기 위한 메모리 공간 확보
- 확보된 메모리 공간에 숫자 10을 2진수 형태로 저장
이 때 자바스크립트 엔진은 숫자 타입의 값 10을 저장하기 위해 필요한 메모리 공간의 크기를 결정한다.
값을 저장하는 경우
자바스크립트 엔진은 데이터 타입에 따라 정해진 크기의 메모리 공간을 확보한다.
즉, 변수에 값이 할당되는 데이터 타입에 따라 확보해야 할 메모리 공간의 크기가 결정된다.
자바스크립트 엔진은 리터럴 10을 숫자 타입의 값으로 해석하고,
숫자 타입의 값 10을 저장하기 위해 8바이트 메모리 공간을 확보한다.
그리고 10을 2진수로 저장한다.
ECMAScript 사양
문자열과 숫자 타입 외의 데이터 타입의 크기를 명시적으로 규정하고 있지는 않다.
따라서 문자열과 숫자 타입을 제외하고 데이터 타입에 따라 확보되는 메모리 공간의 크기는 자바스크립트 엔진 제조사의 구현에 따라 다를 수 있다.
하지만 ECMAScript 사양에 숫자 타입은 배정밀도 64비트 부동소수점 형식을 사용한다고 명시되어 있다.
숫자 타입의 값을 지정할 때에는 항상 64비트의 메모리 공간을 사용함을 의미한다.
값을 참조하는 경우
a의 값을 참조하려면 한 번에 읽어 들여야 할 바이트 수를 알아야 한다.
저장되어 있는 값이 숫자 타입이므로 8바이트 단위로 읽어 들이지 않으면 값이 깨질 수 있다.
메모리에서 값을 올바르게 읽어 들이기 위해서는 필요한 과정이다.
2진수 값의 해석
모든 값은 데이터 타입을 가지고 메모리에 2진수로 저장된다.
메모리에 저장된 값은 데이터 타입에 따라 다르게 해석될 수 있다.
예를 들어, 메모리에 저장된 값 0100 0001을 숫자로 해석하면 65이지만, 문자로 해석하면 ‘A’이다.
변수 a를 숫자 타입의 값으로 할당했기 때문에, a를 참조할 때 메모리 공간에서 읽은 2진수를 숫자로 해석한다.
이처럼 동일한 2진수 값도 데이터 타입에 따라 전혀 다른 의미를 가질 수 있다.
references
https://product.kyobobook.co.kr/detail/S000001766445
'Web, Front-end' 카테고리의 다른 글
[Javascript] let 키워드, 일시적 사각지대 (0) | 2024.06.05 |
---|---|
[Javascript] var 키워드의 문제점과 호이스팅 (0) | 2024.06.05 |
[React] 하나의 index.ts에서 import 및 export 하기 (0) | 2024.05.09 |
[React] 컴포넌트 분리의 중요성 (0) | 2024.02.22 |
[React] 컴포넌트의 생명 주기(Life Cycle) (0) | 2024.02.18 |
컴퓨터 전공 관련, 프론트엔드 개발 지식들을 공유합니다. React, Javascript를 다룰 줄 알며 요즘에는 Typescript에도 관심이 생겨 공부하고 있습니다. 서로 소통하면서 프로젝트 하는 것을 즐기며 많은 대외활동으로 개발 능력과 소프트 스킬을 다듬어나가고 있습니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!