⭐ 주제
- 기본형 타입
- 참조형 타입
- 기본형 타입과 참조형 타입이 다르게 동작하는 이유
number, string, boolean, null, undefined, symbol
값이 담긴 주소값을 복제
object, array, function, date, regexp
object 하위 분류 : map, weakmap, set, weakset
값이 담긴 주소값으로 이루어진 묶음 가리키는 주소값 복제
모든 데이터는 바이트 단위의 메모리 주소값 통해 서로 구분하고 연결 가능
0 또는 1로 표현되는 하나의 메모리 조각
8개 bit로 구성
장점 : 검색 시간 줄임, 표현 가능한 데이터 수 늘어남
단점 : 낭비되는 bit 생김
변경 가능한 데이터가 담기는 공간
변수명으로 어떤 데이터를 식별시 사용하는 이름
var a=1;
변수 영역과 데이터 영역을 분리해 중복된 데이터에 대한 처리 효율 높아짐
var a; //변수 a 선언
a="123"; //변수 a에 데이터 할당
1. 변수 영역에서 빈공간(@1003) 확보
2. 확보한 공간의 식별자를 a로 지정
3. 데이터 영역의 빈공간(@5004)에 "abc" 지정
4. 변수 영역에서 식별자 a 검색
5. 저장된 문자열의 주소(@5004)를 @1003 공간에 대입
var a ="abc";
a="abcdef";
"abc"가 저장된 공간에 "abcdef" 할당 X
1. "abcdef" 문자열 생성
2. 별도의 빈 데이터 공간에 저장
3. 해당 데이터 공간 주소를 변수 공간에 연결
할당이 이루어진 데이터 영역 메모리의 변경 가능성
변경은 새로 만드는 동작을 통해서만 이뤄짐
var b=5; //1,2,3
var c=5; //4,5,6
데이터 영역에서 5 찾기
없으니 데이터 공간 지정해 5 저장
5가 저장된 데이터 공간 주소를 식별자가 b인 변수 영역에 저장
데이터 영역에서 5 찾기
기존에 5가 저장된 데이터 공간 주소 찾음
해당 데이터 공간 주소를 식별자가 c인 변수 영역에 저장
cf) 변수 vs 상수
데이터 할당된 변수 공간에 다른 데이터 재할당 가능성
참조형 데이터를 변수에 할당
: 객체의 변수 (property) 영역 별도로 존재하며 변경가능
var obj1={
x:3,
arr:[3,4,5]
}; //1 ~ 13
obj1.arr="str";
참조 카운트가 0이 된 메모리 주소는 가비지 컬렉터가 수거함