<코어 자바스크립트>
1-1 데이터 타입의 종류
1-2 데이터 타입 배경지식
1-3 변수 선언 데이터 할당
기본형 : 숫자(Number), 문자열(String), 불리언(Boolean), null, undefined, 심볼(Symbol)
참조형 : 객체(Object), 배열(Array), 함수(Function), Map, Set, 정규표현식(RegExp), 날짜(Date)
기본형 : 할당이나 연산시 값이 담긴 주솟값을 바로 복제 불변성
참조형 : 값이 담긴 주솟값들로 이루어진 묶음을 가리키는 주소값을 복제힌다.
데이터와 메모리
컴퓨터의 메모리는 1바이트 크기의 메모리셀 여러개로 구성, 각 비트는 식별자를 가진다.
비트의 식별자를 가지고 데이터를 식별 하기에는 효율적이지 않으므로, 묶어(8)바이트 라는 단위를 만들었고, 이를 바탕으로 검색시간 향상, 표현 데이터의 갯수를 증가 시킨다.
C, java는 메모리의 낭비를 최소화 하기 위해 데이터 타입별로 할당할 메모리 영역을 나누어 정해놓았다.
-메모리가 부족한 시절에는 불가피한 형태
Javascript는상대적으로 메모리 관리에 대한 압박에서 자유로워 졌고, 공간을 넉넉하게 할당한다.
-숫지:64비트(8바이트)
-문자: 1바이트, 한글2바이트 (메모리 용량이 가변적)
=> 바이트 단위의 식별자 (메모리 주솟값)을 통해 서로 구분하거나 연결 시킨다.
**실제 데이터(값)는 식별자와 함께 저장되지 않고, 데이터를 저장하기 위한 별도의 메모리 공간을 다시 확보해서 데이터를 저장하고
저장된 메모리의 주소
를 식별자와 함께 저장한다.
=>분리해서 저장하는 이유? 데이터 변환을 자유롭게, 데이터를 효율적으로 관리하기 위함(중복 데이터의 경우에도 효율)
*** 자바스크립트의 가비지 컬렉터: 어떤 데이터에 대해 자신의 주소를 참조하는 변수의 개수를 참조 카운터라 하며, 참조 카운터가 0이면 가비지 컬렉팅 대상
변수도 변수/데이터 영역을 분리해 저장한다는것을 학습했다.
변경 가능성
이다.불변성
판단) =>상수는 변수영역의 메모리 주소값을 변경한다.
=>데이터 영역의 메모리는 모두 불변이다.
** 참고
변수영역 메모리/데이터 영역의 메모리로 개념을 잡았다면, 실제는 어디에서 동작할까?
출처: https://curryyou.tistory.com/276 [카레유:티스토리]
질문 :
기본형 데이터의 불변성이란 ?
변수를 할당할때 메모리 확보 과정