Core JS 01.데이터 타입

betterplaywon·2022년 1월 10일
0

Core JS

목록 보기
1/5
post-thumbnail

dataType

데이터 타입의 종류

1. 기본형(원시형)
number, string, boolean, null, undefined, (ES6에서 추가) Symbol.
특징 : 값이 담긴 주솟값을 바로 복제


2. 참조형
object, array, function, data, regExp, 이외에
(ES6 추가) map, weakMap, set, weakSet

특징 : 값이 담긴 주솟값들로 이루어진 묶음을 가리키는 주솟값을 복제


데이터 타입의 기본 지식

식별자와 변수
변수란 변할 수 있는 수, 즉 데이터를 뜻함.
식별자란 어떤 데이터를 식별하는 데 사용하는 이름, 즉 변수명


변수 선언과 데이터 할당

변수 선언

변경 가능한 데이터가 담길 수 있는 공간 또는 그릇

데이터 할당

변수와 데이터를 별도의 메모리 공간에 각각 저장,
변수 영역데이터 영역으로 구분.

  • 효율적인 데이터 변환의 처리

  • 중복 데이터에 대한 처리 효율의 증가

  • 기존 데이터에 어떤 변환을 가하든 상관 없이
    무조건 새로 만들어 별도의 데이터 공간에 저장


기본형 데이터와 참조형 데이터

불변값

불변값과 상수는 다른 개념

  • 변수와 상수의 구분 기준은 변수 영역 메모리
  • 불변성 여부의 구분 기준은 데이터 영역 메모리

원시형 데이터는 모두 불변값이다.

  • 그러므로 데이터 영역에 이미 들어있는 데이터는 변경할 수 없고 새로 추가해 저장한다.

가변값

기본형 데이터와 다르게 객체의 변수(프로퍼티) 영역이 별도로 존재한다.
그렇기 때문에 객체의 변수에는 값을 대입할 수 있다.
= 참조형 데이터는 가변값이다.

가비지 컬렉터

  • 참조 카운트
    어떤 데이터에 대해 자신의 주소를 참조하는 변수의 개수
    참조 카운트가 0인 메모리 주소는 가비지 컬렉터의 수거 대상이 된다.
    특정 시점이나 메모리 사용량이 포화 상태가 임박할 때마다
    자동으로 수거 대상들을 수거한다.
    수거된 메모리는 다시 새로운 값을 할당할 수 있는 빈 공간이 된다.

변수 복사 비교

변수 복사 이후 값을 바꿨을 때
원시형은 값이 달라지고 참조형은 값이 달라지지 않는다.
참조형의 데이터는 수정값이 객체의 변수 영역에 들어있기 때문이다.
참조형 데이터의 값을 달라지게 하기 위해서는
객체의 변수 영억이 아닌 새로운 객체를 할당해 값을 직접 변경하면 된다.


불변 객체

얕은 복사

중첩된 객체에서 참조형 데이터가 저장된 프로퍼티를 복사할 때 그 주솟값만 복사하는 방법
= 해당 프로퍼티에 대해 원본과 사본이 모두 동일한 참조형 데이터의 주소를 가리킨다.

깊은 복사

내부의 모든 값을 전부 복사하는 방법

  • 객체의 프로퍼티가 기본형 데이터일 땐 그대로 복사하면 되지만,
    참조형 데이터는 다시 그 내부의 프로퍼티들을 복사해야 한다.
    그리고 이 과정이 재귀적으로 이뤄져야만 한다.
profile
'Why' better than 'Yes'

0개의 댓글