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
반응형

+ Recent posts