[JavaScript] 자바스크립트의 데이터 타입

HyeJean·2024년 2월 19일

JavaScript

목록 보기
2/13

 자바스크립트 스터디를 들어가게 되었다. #코어_자바스크립트 교재와 인프런 강의가 모두 있다. 교재의 목차가 굉장히 마음에 들었다!! 학부시절(지금도 졸업은 안 함) 친구들과 스터디를 하려고 언어 교재를 선정하려고 하면 죄다 언어의 역사부터 반복문, if문을 배우고 겉핥기만 하고 끝나는 점이 ... 싫었다.😒 시간을 투자하여 책 한 권을 끝내도 머리에 남는 게 없었다....

 하지만 이 책은 프론트엔드의 기술 면접 질문 기본 중의 기본이라고 불리는 실행 컨텍스트, 스코프, 클로저에 대해 모두 배울 수 있는 점이 굉장히 좋았다.👍 아날로그 공부법을 선호하는 편이라서 교재 공부로 마음이 기울었지만, 인프런 강의 목차와 강의 시간(다 합쳐서 두 시간)을 보니까 교재로 들을 이유가 사라졌다... 바로 강의를 결제했다. 7강까지 있는데 이 게시글은 1강 데이터 타입에 대해서 정리해보려고 한다.


🤔 자바스크립트의 자료형

 자바스크립트의 자료형(Data Type)은 기본형(Primitive Type)과 참조형(Reference Type)으로 나뉜다. 기본형에는 Number, String, Boolean, null, undefined와 ES6[1]에서 새로 추가된 Symbol까지 있다. 참조형은 Object(객체) 형태를 가지며 객체 안에는 Array, Function, RegExp와 ES6[1]에서 새로 추가된 Set/WeakSet, Map/WeakMap 등이 있다. 기본형은 할당 시 바로 주소 할당이 되고, 참조형은 할당 이전에 객체 안의 프로퍼티 값의 주소를 할당 후 객체 주소를 할당하는 두 단계를 거친다.

 기본형은 값 변경 시 새로운 값이 담긴 새로운 주소로 할당되고, 참조형은 객체 안의 프로퍼티 값을 변경하여도 객체의 주소는 기존처럼 유지된다. (프로퍼티 값의 주소는 변경되고 기존 주소는 참조 카운팅이 0이 되어 가비지컬렉터에 의해 사라지게 된다.)

 주소 할당을 하는 이유는 만약 큰 용량의 데이터가 여러 곳에서 값으로 담기게 된다면 메모리 과부하로 인한 엄청난 성능 저하와 처리 시간 증가가 될 것이다. 이를 방지하기 위해서 한 메모리에 선언해두고 주소 형태로 할당을 하는 것이다. (물론 신규 저장을 비롯한 매 값 저장마다 메모리에 기존에 저장해둔 같은 값이 있는지 비교를 하는 번거로움이 존재한다. = 재활용하기 위함)

 같은 값을 가진 n개의 참조형에 있는 값을 바꾸면, 새로운 메모리 구역에 새로운 값을 넣고 새로운 주소를 공유하므로 같은 값을 가진 n개의 참조형은 항상 같은 객체를 향하게 된다.


🔎 자바스크립트의 메모리

 참고로 자바스크립트의 메모리는 위와 같이 스택 메모리와 힙 메모리로 구분된다.


[1] ES6

 ES6는 ECMAScript 6의 줄임말로, ECMAScript 표준의 여섯 번째 버전이다. ECMAScript는 JavaScript의 표준화된 버전을 제공하는 국제 표준 기구인 ECMA에 의해 정의된다. ECMAScript는 JavaScript의 기본 구문, 타입, 객체 및 다양한 기능을 정의한다.

 ES6는 2015년 6월에 공식적으로 발표되었으며, 이전 버전인 ES5의 대규모 업그레이드 버전으로써 JavaScript 개발자들에게 많은 새로운 기능과 개선된 문법을 제공한다.

0개의 댓글