변수
: 변경 가능한 데이터가 담길 수 있는 공간식별자
: 변수의 이름기본적으로 기본형은 불변값이고 참조형은 가변값인데, 데이터를 저장하는 방식에 차이가 있다.
기본형
: 변수 영역 -> 데이터 영역
변수를 선언하고 기본형 데이터를 할당할 때, 컴퓨터는 메모리의 빈 공간에 식별자를 저장하고, 별도의 공간에 기본형 데이터를 저장한 뒤 그 공간의 주소를 변수의 값 영역에 할당한다.
참조형
: 변수 영역 -> 데이터 영역 -> 객체의 변수 영역 -> 데이터 영역
참조형 데이터를 할당할 때는, 참조형 데이터 내부 프로퍼티들을 위한 변수 영역을 별도로 확보해서 확보된 주소를 변수에 연결하고, 앞서 확보한 변수 영역에 각 프로퍼티의 식별자를 저장하고, 각 데이터를 별도의 공간에 저장해서 그 주소를 식별자들과 매칭시킨다.
참조형 데이터를 불변값으로 사용하기 위해서는, 내부 프로퍼티들을 일일이 복사하는 깊은 복사를 수행해야 한다.
재귀
, JSON.stringify()
를 사용하거나 자바스크립트 라이브러리를 사용하는 방법이 있다.
Spread 연산자
, Object.assign()
는 Depth 1까지 깊은 복사를 수행한다.
undefined
: 어떤 변수에 값이 존재하지 않을 경우null
: 사용자가 명시적으로 '없음'을 표현하기 위해 대입한 값혼란의 여지가 있으므로 '없음'을 표현하기 위해 undefined
를 임의로 할당하는 것은 지양하고, null
을 사용하는 것이 좋다.