ㅎㅇ JS 데이터 타입에 대해 알아보자.

크게 두 가지로 나뉨:

  1. 원시타입 (Primitive type)
  2. 참조타입 (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

+ Recent posts