데이터 타입

eunji lee·2022년 6월 6일
0

자바스크립트

목록 보기
1/5

<코어 자바스크립트>
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바이트 (메모리 용량이 가변적)
=> 바이트 단위의 식별자 (메모리 주솟값)을 통해 서로 구분하거나 연결 시킨다.

변수 선언과 데이터 할당

  1. 변수 선언시 메모리 확보 과정
  1. 변수 선언 : 메모리에서 비어있는 공간 하나를 확보, 식별자 지정 후 undefined 할당.
  2. 할당 : 식별자를 접근할 때(런타임에 할당) 메모리에서 '값'을 조회->해당 값을 가진 메모리의 주소를 식별자에 할당한다.

**실제 데이터(값)는 식별자와 함께 저장되지 않고, 데이터를 저장하기 위한 별도의 메모리 공간을 다시 확보해서 데이터를 저장하고
저장된 메모리의 주소를 식별자와 함께 저장한다.

=>분리해서 저장하는 이유? 데이터 변환을 자유롭게, 데이터를 효율적으로 관리하기 위함(중복 데이터의 경우에도 효율)

*** 자바스크립트의 가비지 컬렉터: 어떤 데이터에 대해 자신의 주소를 참조하는 변수의 개수를 참조 카운터라 하며, 참조 카운터가 0이면 가비지 컬렉팅 대상

변수와 상수

변수도 변수/데이터 영역을 분리해 저장한다는것을 학습했다.

  • 변수와 상수의 차이는변경 가능성이다.
  1. 변수 영역 메모리(변수/상수 판단)
  2. 데이터 영역 메모리(불변성판단)

=>상수는 변수영역의 메모리 주소값을 변경한다.
=>데이터 영역의 메모리는 모두 불변이다.

** 참고
변수영역 메모리/데이터 영역의 메모리로 개념을 잡았다면, 실제는 어디에서 동작할까?

  1. 원시타입 데이터(파란색 변수 a)
    : 10이라는 값 자체는 원시타입이므로 콜스택에 저장된다.
    : 변수 a에는 10이 저장된 콜스택 메모리의 주소값이 저장된다.
  • 변수 식별자 a 자체는 콜스택 상의 '실행컨텍스트(Execution Context)의 렉시컬 환경(Lexical Environment)'이라는 곳에 저장된다.
  1. 참조타입 데이터(핑크색 변수 b, c, d)
    : 배열, 객체, 함수 등은 참조타입이므로 메모리 힙에 저장된다.
    : 참조타입 데이터가 저장된 메모리힙의 주소값은 콜스택에 각각 저장된다.
    : 메모리힙의 주소값이 저장된 콜스택의 주소값은 각각 변수 b, c, d에 저장된다.
  • 마찬가지로, 변수 식별자 b, c, d 이름 자체는 콜스택 상의 '실행컨텍스트(Execution Context)의 렉시컬 환경(Lexical Environment)'에 저장된다.

출처: https://curryyou.tistory.com/276 [카레유:티스토리]


질문 :
기본형 데이터의 불변성이란 ?
변수를 할당할때 메모리 확보 과정

profile
안녕하세요! 이은지 입니다.

0개의 댓글