안녕하세요. 오늘은 기본 자료형과 참조 자료형의 저장 방식과 비교 방식에 대해 작성해보도록 하겠습니다.
기본 자료형(Primitive Types)
- number, string, boolean, null, undefined, symbol과 같은 자료형이며, 값이 스택(Stack)에 직접 저장이 됨
- 값 자체를 비교하므로 같은 값이라면 ===를 사용해도 true를 반환함
let a = 10;
let b = 10;
console.log(a === b); // true
참조 자료형(Reference Types)
- 객체(Object), 배열(Array), 함수(Function) 등이 포함되며 힙(Heap)에 실제 데이터가 저장되고, 스택에는 해당 데이터가 저장된 힙의 주소가 저장됨
- 참조 자료형의 === 비교는 주소가 같은지를 확인하는 것이므로 내용이 같더라도 서로 다른 객체나 배열은 false를 반환
// 서로 다른 객체이므로 주소가 다름
let obj1 = { name: "뭉이" };
let obj2 = { name: "뭉이" };
console.log(obj1 === obj2); // false
// 같은 객체를 참조할 경우
let obj3 = obj1;
console.log(obj1 === obj3); // true
// 배열의 비교 방식
let arr1 = [1, 2, 3];
let arr2 = [1, 2, 3];
console.log(arr1 === arr2); // 서로 다른 주소이므로 false
let arr3 = arr1;
console.log(arr1 === arr3); // 같은 주소를 참조하므로 true
정리
- 기본 자료형은 스택에 값이 저장되어 === 비교 시 값을 비교
- 참조 자료형은 힙에 데이터가 저장되고, 스택에는 그 주소가 저장되며 === 비교 시 주소를 비교
'Languages > JavaScript' 카테고리의 다른 글
[JS] const로 선언해도 값을 바꿀 수 있다? (0) | 2024.11.01 |
---|---|
[JS] 구조 분해 할당(Destructuring Assignment) (1) | 2024.09.12 |
[JS] 나머지 매개변수(Rest Parameter)와 전개 연산자(Spread Operator) (0) | 2024.09.12 |
[JS] for ...in, for ...of의 차이점 정리 (2) | 2024.09.09 |
[JS] 호이스팅(Hoisting) (0) | 2024.09.09 |