기본형 데이터
: 변수 선언 시, 메모리 빈 공간에 식별자 저장, 우선 그 공간의 값은 undefined로 할당. 데이터 할당 시, 별도의 공간에 데이터 저장, 그 공간의 주소를 변수의 값 영역에 할당.
참고형 데이터
: 참고형 데이터 내부 프로퍼티들을 위한 변수 영역 별도로 확보하고 확보된 주소를 변수에 연결.
변수 a에 'abc'를 할당했다가 뒤에 'def'를 추가하면 기존의 값이 바뀌는 것이 아니라 새로운 문자열 'abcdef'를 만들어서 그 주소를 변수 a에 저장함. 이와 같이 변경은 새로 만드는 동작을 통해서만 이루어지며, 가비지 컬렉팅을 당하지 않는 한 한번 만들어진 값은 영원히 변하지 않음.
기본형 데이터(number, string, boolean, null, undefined, symbol)는 모두 불변값
// 기본형 데이터 var a = 10; var b = a; b = 15; // 참고형 데이터 var obj1 = {c: 10, d: 'ddd'}; var obj2 = obj1; obj2.c = 20;
값으로 전달받은 객체에 변경을 가하더라도 원본 객체는 변하지 않아야 하는 경우
immutable.js
, ìmmer.js
와 같은 라이브러리 활용