ㅎㅇ JS 데이터 타입에 대해 알아보자.
크게 두 가지로 나뉨:
- 원시타입 (Primitive type)
- 참조타입 (Reference type)
원시타입
그냥 값 자체를 저장하는 애들임.
얘네가 있음:
- string (문자)
- number (숫자)
- boolean (true/false)
- undefined (값이 없음)
- symbol (ES6에서 추가됨)
- bigint (엄청 큰 숫자)
특징이 뭐냐면:
- 불변임 (한번 만들어지면 그 값이 절대 안 바뀜)
- 복사하면 값 자체를 복사함
예시로 보면 이렇게 됨:
let a = 100;
let b = a;
a = 50;
console.log(b) // 100이 나옴
왜 100이 나올까?
b가 a를 복사할 때 값 자체를 복사했기 때문임.
100이 들어가 있던 변수가 50으로 바뀌는 게 아니라
그냥 50을 새로 메모리에 할당해버림.
b도 같은 100이 아니라 새로운 메모리에 100을 할당함.
같은 값이고 심지어 (=) 대입까지 했지만
같은 값을 가진 다른 주소를 가리키고 있다는 게 중요함.
참조타입은 뭐임.
원시타입 빼고 전부 다 참조타입임.
대표적으로:
- 배열 []
- 객체 {}
- 함수
특징:
- 값의 크기가 막 바뀔 수 있음
- 복사하면 주소만 복사됨 (실제 값이 아님)
보면 이렇게 됨:
예시:
let myArr = [];
let copyArr = myArr;
myArr.push("hello");
console.log(copyArr); // ["hello"]가 나옴
왜 copyArr에도 "hello"가 들어갔을까?
참조타입은 주소만 복사하기 때문임.
말 그대로 주소만 복사한 거임.
그렇기 때문에 주소가 100개고 1000개고 모두 다 같은 집을 가리키고 있는 거임.
집 주소니깐.
원시타입과는 다르게 값이 계속 할당되는 게 아님.
주소만 생길 뿐 결국 가리키는 곳은 주소에 있는 값임.
(코드형 견망지월ㄷㄷ)
참조타입 다룰 때 원본이 바뀔 수 있다는 걸 항상 기억해야 됨.
'JS' 카테고리의 다른 글
1-1 JavaScript 변수 (1) | 2024.11.21 |
---|---|
DOM(Document Object Model) 쉽게 알기 JS (1) | 2024.11.19 |