데이터 타입
데이터 타입이란?
데이터 타입의 종류
자바스크립트의 데이터 타입에는 크게 두가지가 있다.
-
기본형 (number, string, boolean, null, undefined, symbol[es6])
-
참조형 (object, array, function, date ,RexExp[정규표현식],Map,WeakMap, Set, WeakSet)
기본형과 참조형의 차이?
기본형과 참조형 둘 다 복제를 한다. 하지만 기본형은 값이 담긴 주소값을 복제하지만, 참조형은 값이 담긴 주소값들로 이루어진 묶음을 가리키는 주소값을 복제한다. 또한 기본형은 불변성을 띈다.
식별자와 변수
보통 식별자와 변수를 혼용하는 경우가 있다. 혼용하는 건 상관없지만, 정확한 두 단어의 의미를 모른다면 혼란스러울 수 있다.
변수란 변할 수 있는 무언가다. 여기서 무언가란 데이터 를 의미한다. 식별자는 어떤 데이터를 식별하는데 사용하는 이름, 즉 변수명이다.
변수 선언과 데이터 할당
변수선언예시
var a;
위 코드를 말로 풀어보면 "변할 수 있는 데이터를 만든다, 이 데이터의 식별자는 a로 한다"가 된다. 변할 수 있는 데이터기 때문에, 선언할 때는 undefined로 하고 나중에 다른 값으로 바꾸게 된다.
위 코드를 데이터 구조로 표현한다면,
주소: 10xx, 데이터:{이름: a, 값: undefined}
로 표현할 수 있다.
결국 변수란 변경 가능한 데이터가 담길 수 있는 공간 또는 그릇이라고 할 수 있다.
데이터 할당
var a; // 변수 a 선언
a = 'abc'; // 변수 a에 데이터 할당
var a = 'abc'; // 변수 선언과 데이터 할당을 한 문장으로 표현
-
1.변수 영역에서 빈 공간(@1002)를 확보한다.
-
2.확보한 공간에 식별자로 a를 지정한다.
-
3.데이터 영역의 빈 공간(@5004)에 문자열'abc'를 저장한다.
-
4.변수 영역에서 a라는 식별자를 검색한다.(@1002).
-
5.앞서 저장한 문자열의 주소(@5004)를 @1002에 대입한다.
위처럼 자바스크립트에서 변수 선언을 하고 데이터를 할당할 때, 직접 값을 대입하지 않고 한 단계를 더 거치게 된다. 한 단계를 더 거치게 되면, 데이터 변환을 자유롭게 할 수 있고 동시에 메모리를 더욱 더 효율적으로 관리할 수 있다.
만약 미리 확보한 공간 내에서만 데이터 변환을 할 수 있다면, 변환한 데이터를 다시 저장하기 위해서는 확보된 공간을 변환된 데이터 크기에 맞게 늘리는 작업을 선행되야한다.
해당 공간이 메모리 상의 가장 마지막에 있다면 간단하겠지만, 해당 공간이 메모리 중간에 있다면 뒤에 저장된 데이터를 전부 이동시키고 다시 식별자에 연결하는 복잡한 과정을 수행해야한다.
그렇기에 효율적으로 데이터 변환을 처리하기 위해서 변수와 데이터를 별도의 공간에 나누어 저장하는 것이다.