원시타입(불변성o) - 고정된 크기로 Call Stack 메모리에 저장, 실제 데이터가 변수에 할당
참조타입(불변성x) - 데이터 크기가 정해지지 않고, Call Stack 메모리에 저장, 데이터의 값이 heap에 저장되고 변수에 heap메모리의 주소값이 할당.
참조타입은 값을 변경할 때 Call Stack 주소 값은 같은데, Heap메모리 값만 변경하기 때문에 불변성을 유지 할 수 없다. 때문에 새로운 배열을 반환하는 메소드를 사용해 불변성을 유지한다.
메소드
spread operator, map, filter, slice, reduce
const array = [1,2,3,4];
const sameArray = array;
sameArray.push(5);
console.log(array === sameArray); // ture
const array = [1,2,3,4];
const differentArray = [...array, 5];
console.log(array === differentArray); //false
push는 불변성을 유지할 수 없다.