코어자바스크립트 (위키북스)
1장 - 데이터 타입
데이터 타입의 종류
데이터 타입에는 크게 두가지가 있다 : 기본형과 참조형
- 기본형은 숫자, 문자열, 불리언, null, undefined 등 (+ ES6에서 symbol 추가됨)
- 참조형은 객체, 배열, 함수, 날짜, 정규표현식 등 (+ ES6에서 Map, WeakMap, Set, WeakSet 추가됨)
기본형은 할당이나 연산시 복제되고 참조형은 참조된다.
두가지 형태 모두 복제를 하긴 하지만,
기본형은 값이 담긴 주솟값을 바로 복제하는 반면 참조형은 값이 담긴 주솟값들로 이루어진 묶음을 가리키는 주솟값을 복제한다.
기본형은 불변성을 띈다?
let a = 10;
a = 20;
console.log(a); // 20
이렇게 보면 값이 변하는 것 처럼 보이는 것이 아닌가?
불변성을 이해하기 위해서는 메모리와 데이터의 지식이 필요하고
식별자와 변수의 개념을 구분할 수 있어야한다.
데이터 타입에 관한 배경지식
- 비트 : 0 또는 1만 표현할 수 있는 하나의 메모리 조각
메모리는 많은 비트로 구성되어 있으며 각 비트는 고유한 식별자를 통해 위치를 확인할 수 있다. - 바이트 : 1바이트 = 8비트
바이트 역시 시작하는 비트의 식별자로 위치를 파악할 수 있다.
모든 데이터는 바이터 단위의 식별자, 즉 주솟값으로 이루어져 있다.
- 변수 : 변할 수 있는 수
값이 반드시 숫가 아니어도 된다. 문자열, 객체, 함수 등도 가능하다. - 식별자 : 어떤 데이터를 식별하는데 사용하는 이름, 즉 변수명
변수 선언과 데이터 할당
var a;
이를 풀어보면 '변할 수 있는 데이터를 만든다. 이 데이터의 식별자를 a로 한다.'는 뜻이다.
변수란 결국 변경 가능한 데이터가 담길 수 있는 공간 또는 그릇이다.
var a; 라는 명령을 받은 컴퓨터는 메모리에서 비어있는 공간 하나를 확보한다. 그 공간의 이름(식별자)을 a로 지정한다 > 변수 선언 과정
이후 사용자가 a에 접근하고자 하면 메모리에서 a라는 이름을 가진 주소를 찾아 그 공간에 담긴 값을 가져온다 > 데이터 할당 과정
var a = 'abc'; // 변수 선언과 데이터 할당
a라는 이름을 가진 공간에 'abc'를 할당하는데 실제로는 해당 위치에 문자열 'abc'를 직접 저장하지는 않는다.
데이터를 저장하기 위한 별도의 메모리 공간을 다시 확보해서 거기에 'abc'를 저장하고 그 주소를 변수 영역에 저장하는 식으로 이루어진다.
왜? 직접 대입하지 않고 별도의 공간을 확보해서 거기에 저장하는가?
- 데이터 변환을 자유롭게 하고
- 메모리를 효율적으로 사용하기 위해서
미리 확보한 공간 내에서만 데이터 변환을 할 수 있다면 변환한 데이터를 다시 저장하기 위해서는 확보된 공간을 해제하고 새로운 공간을 확보하는 과정을 거쳐야 한다.
그렇게 되면 컴퓨터가 처리해야할 연산이 많아질 수 밖에 없고,
결국 효율적으로 문자열 데이터의 변환을 처리하려면 변수와 데이터를 별도의 공간에 나누어 저장하는 것이 최적이다.
'책곡책곡 > 코어 자바스크립트' 카테고리의 다른 글
[JS] 2장 실행 컨텍스트 - 실행 컨텍스트 (0) | 2024.11.03 |
---|