JS - 원시자료형과 참조자료형

장은수·2022년 11월 6일
0

FE공부일기

목록 보기
7/7

▶원시 자료형

JavaScript에서 원시 타입의 데이터는 객체가 아니면서 메서드를 가지지않는 6가지의 타입
string, number, bigint, boolean, undefined, symbol, (null)

원시자료형은 모두 "하나"의 데이터를 담고있다.

  • 원시자료형은 값 자체에 대한 변경이 불가능하지만, 변수에 다른 데이터를 할당할 수는 있다.

▶참조 자료형

JavaScript에서 원시 자료형이 아닌 모든 것은 참조 자료형이다.
배열과 객체, 함수가 대표적

참조자료형은 하나의 데이터가 아닌 여러게의 데이터가 담기게 된다.

  • 참조자료형의 데이터 자체는 원시자료형이 보관되는 데이터 보관함이 아닌 특별한 데이터 보관함에 저장되는데 이 데이터가 위치한 곳을 가리키는 주소가 변수에 저장된다.
  • 즉, 변수에는 특별한 데이터 보관함을 찾아갈 수 있는 주소가 담겨져있다.

원시자료형과 참조자료형의 특징

  • 원시 자료형이 할당될 때에는 변수에 값(value) 자체가 담기고, 참조 자료형이 할당될 때는 보관함의 주소(reference)가 담긴다.
  • 그래서 참조 자료형은 기존에 고정된 크기의 보관함이 아니라, 동적으로 크기가 변하는 특별한 보관함을 사용할 수 있다.

예를 들어,

console.log('codestates' === 'codestates'); //true
console.log(3.14 === 3.14); //true
console.log([1,2,3] === [1,2,3]); //false
console.log({ foo: 'bar' } === { foo: 'bar' }); //false

위 코드를 보면 위에 두줄은 true를 아래 두줄은 false를 반환하는걸 볼 수 있는데

이는, 문자열과 숫자는 원시형 데이터 타입이고
배열과 객체는 참조형 데이터 타입이기때문인데

참조자료형의 ===는 주소값이 같은지 확인하기때문에 두 참조자료형의 주소값이 다르다고 판단을 내리는 것이다.

동일하게 [] === []도 true가 나오지 않는다.

0개의 댓글