원시값과 객체의 차이!

김용진·2022년 4월 25일
0

Javascript

목록 보기
1/5

React에서 React.memo()를 공부하다가 props로 전해지는 값이 무엇인지에 따라 결과가 달라지는 원인이 원시값과 객체의 차이라는 것을 알고, javascript에서 배웠던 내용을 다시 정리해 본다.

javascript는 7가지 데이터 타입을 제공한다.

Number, String, Boolean, null, undefined, Symbol, Object

위의 7가지 데이터 타입은 크게 원시(primitive) 타입과 객체(object)타입으로 분류할 수 있다.

그 차이는 변수에 할당해보면 쉽게 알 수 있다.

변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체, 또는 그 메모리 공간을 식별하기 위해 붙인 이름이다.

원시값: 변경 불가능한 값

Number, String, Boolean, null, undefined, Symbol

원시값을 변수에 할당 했을 때는 그 값 자체가 메모리에 할당이 된다. 따라서, 그 원시값을 할당한 변수에 새로운 원시값을 재할당하게 되면, 같은 메모리 공간의 그 원시값을 변경하는 것이 아니라 새로 확보된 메모리 공간에 저장된 새로운 원시값을 변수가 가리키게 된다.
원시값을 담은 변수를 다른 변수에 저장할 때에는 '값' 자체가 복사되어 전달된다. 이를 '값에 의한 전달'이라 한다.

객체: 변경 가능한 값

Object

객체는 프로퍼티 키를 통해 값에 접근이 가능하고, 변경까지 가능하다. 객체를 변수에 할당 했을 때는 원시값의 할당과 달리, 메모리 공간에 값 자체가 아닌 객체의 '참조 값'(메모리 공간의 주소)이 전달된다.
객체를 담은 변수를 다른 변수에 저장할 때에는 '값 자체'가 전달되는 것이아닌 값을 담은 메모리 주소인 '참조 값'이 전달된다. 이를 '참조에 의한 전달'이라 한다.

profile
기획/개발/디자인 다 하고싶은 프론트엔드 개발자

0개의 댓글