JS에서 모든 값은 데이터타입을 갖는다의 의미

서재환·2022년 2월 14일
0

JavaScript

목록 보기
10/25

JS에서 모든 값은 데이터타입을 갖는다.

변수가 선언이 되고 값이 담긴다. 즉 값이 있으려면 값을 어딘가에 저장해야 한다. 변수에 저장하므로
변수는 값에 의해 데이터타입을 갖는다고 볼 수 있다.

데이터타입

자바스크립트에서 데이터타입으로 원시타입과 참조타입이 있다. 

원시타입과 참조타입

원시타입(Primitive type)의 변수들은 데이터 복사가 일어날 때 메모리 공간을 새로 확보
하여 독립적인 값을 저장하며 참조 타입은 메모리에 직접 접근이 아닌 메모리의 위치(주소)에
대한 간접적인 참조를 통해 메모리에 접근하는 데이터 타입이다.

원시타입의 종류

string, number, bigint, boolean, undefined, ES6 부터 추가된 symbol

먼저 선언되 변수에 값을 재할당 시 변수가 가리키는 메모리 안에 담겨 있는 값이 바뀌는 것이 아니라 변수
가 가리키는 메모리의 주소가 달라진다. 즉 다른 메모리 주소를 가리킨다. 그러한 이유로 원시타입은 불변한
다라고 일컫는다.

위의 타입을 제외한 참조타입

자바스크립트는 위의 6가지 타입을 제외한 타입을 모두 참조타입으로 간주한다. 배열, 객체, 함수 등이 속
한다. 원시타입과 가장 큰 차이점은 번수의 크기가 동적으로 변한다는 점에 있다. 따라서 원시타입의 변수
가 가리키는 메모리 주소에 값이 들어가 있는 것과 달리 참조 타입이 가리키는 메모리 주소에는 값이 들어
가 있지 않고 heap memory에 올라와 있는 객체에 대한 주소를 값으로 담고 있다.

값으로 heamp memory에 올라간 메모리 주소를 갖고 있기 참조 변수, 참조타입이라고 부른다.

객체는 복사되지 않고 참조된다

객체는 복사되지 않고 참조된다는 사실을 명확하게 인지하고 있어야 한다. 메모리에 접근하는 것이기에 프로그
램 안정성 측면에서 명확하게 인지하고 있어야 한다.

0개의 댓글