타입(자료형)는 데이터의 종류라고 할 수 있습니다.
js는 동적 타입이라 한 변수에 여러 타입의 데이터를 재할당 할 수 있는데요,
먼저 원시 타입과 참조타입을 알아보겠습니다.
원시타입 primitive type
- 가장 기초적인 타입을 가진 값입니다
변수에 값 자체가 저장이 되고 불면하며 변경 시 새로운 값을 생성합니다.
스택 메모리에 저장이 됩니다.
변수 간의 복사는 값 자체를 복사하며 독립적입니다.
원본은 하나 뿐입니다.
종류
string: 문자열
number: 숫자
boolean: 논리값 (true, false)
undefined: 선언되었으나 값이 할당되지 않은 상태 즉, 메모리 할당만 받은 변수입니다.null: 의도적으로 "값이 없음"을 나타냄
null: 객체가 없음을 의미하는 값
symbol: 고유하고 변경 불가능한 값 (ES6 도입)
bigint: 아주 큰 정수를 나타냄 (ES11 도입)
참조타입 Reference type
변수, 함수 등의 이름을 기반으로 참조 가능한 메모리의 값에 저장합니다.
참조 타입의 데이터는 힙 메모리에 저장됩니다.
같은 원본이 여러 곳에 사용될 수 있습니다.
종류
object: 객체, 배열, 함수 등
얉은 복사 shallow copy
- 객체의 참조만 복사합니다.
만약에 얕은 복사를 여러번을 하면 하나의 원본을 가르키는 변수가 여러개가 되고 서로 값의 변경에 영향을 끼치는 문제점이 있습니다.
const originalObj = { a: 1, b: { c: 2 } };
const shallowCopy = { ...originalObj }; // 얕은 복사
shallowCopy.a = 3; // 원본에는 영향 없음
shallowCopy.b.c = 4; // 원본에 영향 있음
console.log(originalObj); // 출력: { a: 1, b: { c: 4 } }
console.log(shallowCopy); // 출력: { a: 3, b: { c: 4 } }
깊은 복사 Deep copy
- 실제 값을 복사합니다
각 변수의 값 변경에 서로를 영향받지 않아 독립적으로 사용됩니다.
const originalObj = { a: 1, b: { c: 2 } };
const deepCopy = JSON.parse(JSON.stringify(originalObj)); // 깊은 복사
deepCopy.a = 3; // 원본에는 영향 없음
deepCopy.b.c = 4; // 원본에 영향 없음
console.log(originalObj); // 출력: { a: 1, b: { c: 2 } }
console.log(deepCopy); // 출력: { a: 3, b: { c: 4 } }
'자바스크립트' 카테고리의 다른 글
[JavaScript] 함수 (0) | 2025.03.07 |
---|---|
[JavaScript] 객체 (1) | 2025.03.06 |
[JavaScript] 변수 선언 (0) | 2025.03.04 |
[JavaScript] this 키워드 (0) | 2025.02.28 |
[JavaScript] 타이핑 측정하는 웹사이트 만들기 (1) | 2025.02.28 |