자바스크립트엔진은 데이터 타입, 즉 값의 종류에 따라 정해진 크기의 메모리공간을 확보한다.
자바스크립트 ES6의 7개 데이터타입
구분 | 데이터타입 |
원시타입 | 숫자타입 |
문자열타입 | |
불리언타입 | |
undefiend 타입 | |
null 타입(값이 없다는것을 의도적으로 명시할 때 ) | |
symbol타입 | |
객체타입 | 객체,함수,배열등 |
+심벌 이외의 원시값은 리터럴을 통해 생성하지만 심벌은 symbol함수 호출하여 생성한다.
이때 생성된 심벌 값은 외부에 노출되지 않으며 다른 값과 절대 중복되지 않은 유일무이한 값
데이터타입에 따라 확보되는 메모리공간의 크기
숫자 2와 문자열 2는 값을 생성한 용도와 목적이다르며
확보해야할 메모리 공간의 크기도 다르고 메모리에 저장되는 2진수도 달라 읽어 들여 해석하는 방식도 다르다
값을 참조하는 경우
var score = 100
식별자 score를 통해 숫자타입 값 100이 저장되어있는 메모리 공간의 주소(셀의주소)를 찾아갈 수 있다.
이때 값을 참조하려면 한번에 읽어들여야 할 메모리 공간의 크기, 즉 메모리 셀의 개수(바이트 수)를 알아야한다.
score 변수의 경우 저장되어있는 값이 숫자 타입이므로 8바트 단위로 읽어드이지 않으면 값이 훼손된다.
그렇다면 컴퓨터는 한 번에 읽어 들어야 할 메모리 셀의 크기를 어떻게 알 수잇는 것일가?
변수에는 숫자타입이 할당되어 있으므로 score변수를 숫자타입으로 인식,
숫자타입은 8바이트 단위로 저장되므로 score 변수르 참조하면 8바트 단위로 메모리 공간에 저장된 값을 읽어들인다.
데이터타입에 의한 값의 해석
메모리에서 읽어 들인 2진수를 어떻게 해석해야할까
모든 값은 데이터 타입을 가지며, 메모리에 2진수, 즉 비트의 나열로 저장된다.
메모리에 저장된 값은 데이터 타입에 따라 다르게 해석될 수 있다.
예를 들어 메모리에 저장된 값 0100 0001을 숫자로는 65로 , 문자열로는 A로 해석한다.
앞서 정리한 데이터타입이 필요한이유
값을 저장 할 때 확보해야하는 메모리 공간의 크기를 결정하기 위해
값을 참조할 때 한번에 읽어 들어야할 메모리 공간의 크기를 결정하기위해
메모리에서 읽어들인 2 진수를 어떻게 해석할지 결정하기 위해
+컴파일러 또는 인터프리터는 심벌 테이블이라는 자료 구조를 통해 식별자를 키로 바인딩된 값의 메모리주소,데이터타입, 스코프 등을 관리한다.
'코딩 > Javascript' 카테고리의 다른 글
생성자 함수: 붕어빵 틀 (0) | 2021.10.14 |
---|---|
변수3-var , let , const (0) | 2021.10.14 |
카멜케이스와 파스칼케이스 (0) | 2021.10.08 |
변수1-값의 할당, 재할당 (0) | 2021.10.08 |
변수2- 변수 선언의 실행시점과 변수 호이스팅 (0) | 2021.10.08 |