🔎 자바스크립트의 원시 타입과 참조 타입
자바스크립트는 원시 타입과 참조 타입이라는 두 가지 타입의 자료형을 제공한다.
1️⃣ 원시 타입 (Primitive Type)
원시 타입에는 아래와 같이 여섯 가지가 있으며, 이 외의 모든 값은 객체(참조) 타입이다.
◾숫자 (Number, BigInt)
◾불리언(Boolean)
◾null
◾undefined
◾문자열 (String)
◾Symbol
원시타입 데이터는 변수에 할당될 때 메모리 상에 고정된 크기로 스택 영역에 저장되고 해당 변수는 원시 데이터의 값을 보관한다.
또한, 원시타입 자료형은 변수 선언, 초기화, 할당 시 값이 저장된 메모리 영역에 직접적으로 접근한다.
즉 변수에 새 값이 할당될 때 변수에 할당된 메모리 블럭에 저장된 값을 바로 변경한다는 뜻이다.
✅ 원시 타입은 값 자체를 복사하기 때문에 원본 데이터의 값이 바뀌더라도 기본 데이터의 값을 유지한다.
let origin = 100;
let copy = origin;
console.log(copy); // 100
origin = 200;
console.log(copy); // 100
2️⃣ 참조 타입 (Reference Type)
참조 타입에는 객체(Object), 배열(Array), 함수(function)가 있다.
참조타입 데이터는 크기가 정해져 있지 않고 변수에 할당될 때 값이 직접 해당 변수에 저장되는 것이 아니라, 변수의 값이 저장된 힙(Heap) 메모리의 주소 값을 저장한다.
따라서 참조타입 변수의 값이 저장된 메모리 블록의 주소를 가지고 있기 때문에, 변수가 가지고 있는 메모리 주소를 이용해서 변수의 값에 접근한다.
✅ 참조타입은 주소 값을 참조하기 때문에, 원본 데이터의 값이 바뀌면 복사한 데이터의 값도 변경된다.
let origin = {
name: 'a'
}
let copy = origin;
console.log(copy.name); // a
origin.name = 'b';
//origin과 copy는 동일한 주소값을 참조하기 때문에 같은 객체를 나타낸다.
console.log(copy.name); // b
📌 참고사이트
'FRONTEND > Javascript' 카테고리의 다른 글
[JS] 객체 반복문 돌리기 (0) | 2023.04.19 |
---|---|
[JS] textarea 높이 자동 조절 (0) | 2023.04.18 |
[JS] 생성자 함수 (0) | 2023.03.23 |
[JS] 변수와 호이스팅 (0) | 2023.03.23 |
[JS] == 와 ===의 차이점 (동등연산자와 일치연산자) (0) | 2023.03.20 |