자바스크립트의 원시값과 참조값
자바스크립트는 원시타입과 참조타입 두가지의 자료형이 제공된다.
- 원시 타입 - null, undefined, string, number, boolean, symbol
- 참조 타입 - Array, Object, Function
원시 타입 데이터는?
- 변수에 할당될 때 메로리 상에 고정된 크기로 저장되고 해당 변수가 원시 데이터의 값을 보관한다.
- 원시 타입 자료형은 모두 변수 선언, 초기화, 할당시 값이 저장된 메모리 영역에 직접적으로 접근한다. 즉 변수에 새 값이 할당 될 때 변수에 할당된 메모리 블럭에 저장된 값을 바로 변경한다는 뜻이다.
- 변수에 새로운 값을 할당하면 변수가 참조하는 메모리 공간의 주소가 바뀌게된다.
- 값을 복사
var x = 100;
var y = x;
x = 99;
y;
참조 타입 데이터는?
- 자바스크립트는 객체의 메모리를 직접 조작하지 않고, 해당 객체에 대한 '참조'를 조작한다. 따라서 객체를 가리키는 값은 '참조로 접근한다'라고 한다.
- 크기가 정해져 있지 않고 변수에 할당될 때 값이 직접 해당 변수에 저장될 수 없으며, 변수에는 데이터에 대한 참조만 저장된다. 참조 타입은 변수의 값이 저장된 메모리 블럭의 주소를 가지고 있고, 자바스크립트 엔진이 변수가 가지고 있는 메모리 주소를 이용해서 변수의 값에 접근한다.
- 값을 참조
var x = {const: 100};
var y = x;
x.count = 99;
y.count;