728x90
반응형
* 본 블로그 글은 모던 자바스크립트를 읽으며 진행했음을 밝힙니다.
* 개인적인 공부 기록용이, 상업적으로 사용하지 않으며 문제가 있을 시 즉시 글을 내리도록 하겠습니다.
11장 원시 값과 객체의 비교
자바 스크립트의 데이터 타입에는 원시 타입과 객체 타입이 있다.
원시 타입의 값 | 객체 타입의 값 |
변경 불가능한 값 | 변경 가능한 값 |
변수 할당시 실제 값이 저장 | 변수 할당시 참조 값이 저장 |
다른 변수에 할당 시 원시 값 복사, 전달 | 다른 변수에 할당 시 참조 값 복사, 전달 |
🍔 원시 값
원시 값은 변경 불가능한 값이다.(immutable value)
변경 불가능하다고 해서 재할당이 안되는 것은 아니다.
쉽게 설명하면 이미 종이에 적힌 글자를 변경할 방법은 없다.
다만, 새로 적으면 변경할 수 있는 것이다.
때문에 데이터의 신뢰성이 보장된다.
🍟 자바스크립트에서는 문자열을 유사 배열 객체라고도 한다.
🍟 변수에 변수를 할당했을 때 무엇이 어떻게 전달될까?
let score = 80;
let copy = score;
// score = 80, copy = 80
copy = 100;
// score = 80, copy = 100
🍟 이게 무슨 말이냐면 변수에 변수를 할당 했지만, 각자 다른 메모리 공간에 있다는 것을 뜻한다.
🍔 객체
객체 값은 변경 가능한 값이다.(mutable value)
그리고 앞서 참조값이라고 했다.
let person = {
name: 'kkan',
};
변수 person은 객체 {name: 'kkan'}을 참조하고 있다.
만약 저 값을 수정하고 싶다면,
person.name = 'kim'; // kkan => kim
person.age = 20; // age: 20 을 추가
🍟 얕은 복사 vs 깊은 복사
얕은 복사는 객체의 구조적인 단점으로 인해 값이 공유된다.
let person = {
name: 'kkan',
};
let person2 = person;
console.log(person === person2); // true
person2.name = 'kim';
person2.age = 20;
// person = {name: 'kim', age: 20}
// person2 = {name: 'kim', age: 20}
🍟 영향을 받는다.

끝!
728x90
반응형
'쓰윽터디 > JavaScript' 카테고리의 다른 글
[모던 자바스크립트] 13장 스코프 (0) | 2023.07.18 |
---|---|
[모던 자바스크립트] 12장 함수 (0) | 2023.07.13 |
[모던 자바스크립트] 10장 객체 리터럴 (0) | 2023.06.29 |
[모던 자바스크립트] 9장 타입 변환과 단축 평가 (1) | 2023.06.28 |
[모던 자바스크립트] 8장 제어문 (0) | 2023.06.27 |