원시 자료형은 자바스크립트의 기본이 되는 변수와 함수처럼,
하나의 고정된 저장공간을 원시 자료형(primitive type) 데이터 라고 한다.
- string
- number
- boolean
- undefined
- null
하나의 메모리에 하나의 데이터를 보관하고 값 자체의 변경은 불가능하나 변수를 재할당해도 이전 변수의 할당 값에 영향을 주지 않습니다.
참조타입은 원시자료형의 값,데이터
와 달리 주소를 저장합니다.
그 중 배열,객체,함수가 대표적이고 변수는 주소를 저장하며 값을 재할당 할 경우 주소를 참조한 모든값이 영향을 받으며 값이 공유됩니다.
let object = {
object1: 10,
object2: 20,
object3: 30,
}
let newObject = object;
newobject.object2 = 40; //object2 값에 20에서 40을 재항당
console.log(object.object2) //40
console.log(newObject.object2) //40
//위처럼 두 객체는 동일한 주소를 공유하기 때문에 복사를 했다고 해도 값을 재할당하면 원본의 데이터도 같이 바뀝니다. 값이 바뀌지 않게 하려면
let newObject = {...object}
//이런식으로 {}는 주소를 뜻하기 때문에 다른 주소안에 스프레드 연산자를 이용해서 복사를 하면 데이터를 재할당해도 원본의 데이터는 바뀌지 않습니다.
💡 참조 자료형 (Reference data type) = 참조타입
- 자바스크립트에선 원시 자료형이 아닌 모든 것은 참조 자료형이다.
- 참조형은 원시형 데이터의 집합이다.
- 배열([])과 객체({}), 함수(function(){})가 대표적이다.
- 참조 자료형은 기존에 고정된 크기의 보관함이 아니다.
- 참조 자료형을 변수에 할당할 때는 변수에 값이 아닌 주소를 저장한다.
- 동적으로 크기가 변하는 데이터를 보관하기위해 변수가 아닌 다른곳에 데이터를 저장하고 변수에는 그 주소만 할당한다.
- 배열 – Array : [0,1,2,3,4]
- 객체 – Object {name : “code”, age : 22}