1. 기본형(원시형)
number, string, boolean, null, undefined, (ES6에서 추가) Symbol.
특징 : 값이 담긴 주솟값을 바로 복제
2. 참조형
object, array, function, data, regExp, 이외에
(ES6 추가) map, weakMap, set, weakSet
특징 : 값이 담긴 주솟값들로 이루어진 묶음을 가리키는 주솟값을 복제
식별자와 변수
변수
란 변할 수 있는 수, 즉 데이터
를 뜻함.
식별자
란 어떤 데이터를 식별하는 데 사용하는 이름, 즉 변수명
변경 가능한 데이터가 담길 수 있는 공간 또는 그릇
변수와 데이터를 별도의 메모리 공간에 각각 저장,
변수 영역
과 데이터 영역
으로 구분.
효율적인 데이터 변환의 처리
중복 데이터에 대한 처리 효율의 증가
기존 데이터에 어떤 변환을 가하든 상관 없이
무조건 새로 만들어 별도의 데이터 공간에 저장
불변값과 상수는 다른 개념
원시형 데이터는 모두 불변값이다.
기본형 데이터와 다르게 객체의 변수(프로퍼티) 영역이 별도로 존재한다.
그렇기 때문에 객체의 변수에는 값을 대입할 수 있다.
= 참조형 데이터는 가변값이다.
변수 복사 이후 값을 바꿨을 때
원시형은 값이 달라지고 참조형은 값이 달라지지 않는다.
참조형의 데이터는 수정값이 객체의 변수 영역에 들어있기 때문이다.
참조형 데이터의 값을 달라지게 하기 위해서는
객체의 변수 영억이 아닌 새로운 객체를 할당해 값을 직접 변경하면 된다.
중첩된 객체에서 참조형 데이터가 저장된 프로퍼티를 복사할 때 그 주솟값만 복사하는 방법
= 해당 프로퍼티에 대해 원본과 사본이 모두 동일한 참조형 데이터의 주소를 가리킨다.
내부의 모든 값을 전부 복사하는 방법