[DeepDive] 11장 원시 값과 객체의 비교

FE 개발자 신상오·2022년 8월 4일
0

모던JS 딥다이브

목록 보기
5/5
post-thumbnail

📚 원시 값과 객체의 비교

📗 원시 값 : 변경 불가능한 값

한번 생성된 원시 값은 읽기 전용 값으로서 변경이 불가능하다
변수가 변경 불가능한 것이 아닌 값을 변경할 수 없음

즉, 변수는 새로운 메모리 공간을 차지하는 값을 재할당해서
변경하는 것이지 이미 메모리 공간 차지하고 있는 원시 값은 변경할 수 없다는 뜻임
값의 이런 특성을 불변성이라 한다.


문자열과 불변성

문자열은 1개의 문자당 2byte차지
숫자는 0이든 100000이든 8byte차지

C에서는 문자 타입만 존재하지 문자열 타입은 존재하지 않는데
(각 문자가 들어있는 배열로 처리)
JS에서는 원시 타입이며 변경 불가능한 문자열 타입을 제공한다.

⚠️ 유사배열 객체 : 문자열
문자열도 배열처럼 각 인덱스에 접근할 수 있고 탐색할 수 있지만 수정하거나 변경할 수 없다

let str = 'string'
console.log(str[0]); // s

str[0] = 'S'
console.log(str); // string -> 변경 불가능

📗 객체

객체(참조)타입의 값으로 객체는 변경가능한 값
변수가 값 자체를 기억하고 있는 것이 아니라 값이 들어있는 메모리의 주소가 할당되어 있음
(C언어의 포인터 개념과 거의 같다고 보면됨)

얕은 복사와 깊은 복사

얕은 복사와 깊은 복사로 생성된 객체는 원본과 다른 객체이다.
즉, 원본과 복사본의 참조 값이 다른 별개이다.

쉽게 말하면 깊은 복사는 참조 값이 아닌 실제 값을 새로운 메모리 공간에 복사본을 만드는 것이고
얕은 복사는 참조 값으로 새로운 메모리 공간에 복사본을 만드는 것이다

⚠️ 얕은 복사를 통한 복사본을 수정하면 원본에도 영향이간다
(같은 주소값을 공유하고 있기 때문)

profile
주간 회고용 블로그입니다 (개발일지와 정보글은 티스토리에 작성합니다.)

0개의 댓글